表格功能是Word 一個(gè)非常重要的功能,也是用戶經(jīng)常使用的一 項(xiàng)功能,在Word 2000 中,增加了不少新的功能。如果利用VBA 自 動(dòng)處理表格將使用戶的效率有極大的提高。
12.6.1 向表格單元格插入文字
下面的代碼向活動(dòng)文檔的第一個(gè)表格的第一個(gè)單元格插入文字。 Cell 方法返回單個(gè)的 Cell 對(duì)象。Range 屬性返回一個(gè) Range 對(duì) 象。Delete 方法用來(lái)刪除現(xiàn)有的文字,而 InsertAfter 方法用來(lái) 插入"Cell 1,1"文字。
If ActiveDocument.Tables.Count >= 1 Then
With ActiveDocument.Tables ( 1 ) .Cell ( Row:=1,
Column:=1).Range
.Delete
.InsertAfter Text:="Cell 1,1"
End With
End If
12.6.2 在表格中插入文字
下面的代碼在文檔的開頭插入一張3 行 4 列的表格。For Each...Next 結(jié)構(gòu)用來(lái)循環(huán)遍歷表格中的每個(gè)單元格。在 For Each...Next 結(jié)構(gòu)中,InsertAfter 方法用來(lái)向表格單元格(Cell 1、 Cell 2 等等)添加文字。
Set oDoc = ActiveDocument
Set oTable = oDoc.Tables.Add ( Range:=oDoc.Range
(Start:=0, End:=0), NumRows:=3, _
NumColumns:=4)
iCount = 1
For Each oCell In oTable.Range.Cells
oCell.Range.InsertAfter "Cell " & iCount
iCount = iCount + 1
Next oCell
oTable.AutoFormat Format:=wdTableFormatColorful2, _
ApplyBorders:=True, ApplyFont:=True,
ApplyColor:=True
12.6.3 顯示每個(gè)單元格的內(nèi)容
下面的代碼返回并顯示文檔第一張表格第一行中每個(gè)單元格中 的內(nèi)容。
Set oTable = ActiveDocument.Tables(1)
For Each aCell In oTable.Rows(1).Cells
Set myRange = ActiveDocument.Range
(Start:=aCell.Range.Start, _
End:=aCell.Range.End - 1)
MsgBox myRange.Text
Next aCell
Set oTable = ActiveDocument.Tables(1)
For Each aCell In oTable.Rows(1).Cells
Set myRange = aCell.Range
myRange.MoveEnd Unit:=wdCharacter, Count:=-1
MsgBox myRange.Text
Next aCell
12.6.4 將文本轉(zhuǎn)換為表格
下面的代碼在活動(dòng)文檔的開頭插入以制表符分隔的文本,然后將 這些文本轉(zhuǎn)換為一張表格。
Set oRange1 = ActiveDocument.Range(Start:=0, End:=0)
oRange1.InsertBefore "one" & vbTab & "two" & vbTab &
"three" & vbCr
Set oTable1 = oRange1.ConvertToTable(Separator:=Chr
(9), NumRows:=1, NumColumns:=3)
12.6.5 返回每個(gè)表格單元格的內(nèi)容
下面的代碼定義一個(gè)數(shù)組,使該數(shù)組的元素個(gè)數(shù)等于文檔第一個(gè) 表格中的單元格數(shù)(假定 Option Base 1)。For Each...Next 結(jié) 構(gòu)用來(lái)返回每個(gè)表格單元格的內(nèi)容,并將文字指定給相應(yīng)的數(shù)組元 素。
If ActiveDocument.Tables.Count >= 1 Then
Set oTable = ActiveDocument.Tables(1)
iNumCells = oTable.Range.Cells.Count
ReDim aCells(iNumCells)
i = 1
For Each oCell In oTable.Range.Cells
Set myRange = oCell.Range
myRange.MoveEnd Unit:=wdCharacter, Count:=-1
aCells(i) = myRange.Text
i = i + 1
Next oCell
End If
12.6.6 將活動(dòng)文檔中的所有表格復(fù)制到一篇新文檔
下面的代碼將當(dāng)前文檔中的表格復(fù)制到新文檔中。
If ActiveDocument.Tables.Count >= 1 Then
Set oDoc1 = ActiveDocument
Set MyRange = Documents.Add.Range ( Start:=0,
End:=0)
For Each oTable In oDoc1.Tables
oTable.Range.Copy
With MyRange
.Paste
.Collapse Direction:=wdCollapseEnd
.InsertParagraphAfter
.Collapse Direction:=wdCollapseEnd
End With
Next
End If
12.6.7 引用活動(dòng)元素
要引用活動(dòng)段落、表格、域或其他文檔元素,可使用 Selection屬性返回一個(gè) Selection 對(duì)象。通過(guò) Selection 對(duì)象,可以訪問(wèn) 所選內(nèi)容中的所有段落或第一個(gè)段落。
下面的代碼為所選內(nèi)容的第一張表格第一行應(yīng)用底紋。
Selection.Tables ( 1 ) .Rows ( 1 ) .Shading.Texture =
wdTexture10Percent
如果所選內(nèi)容中沒(méi)有表格,則會(huì)產(chǎn)生錯(cuò)誤。使用 Count 屬性可以判定所選內(nèi)容中是否有表格。下面的代碼為所選內(nèi)容的第一張表格第一行應(yīng)用底紋。
If Selection.Tables.Count >= 1 Then
Selection.Tables(1).Rows(1).Shading.Texture =
wdTexture10Percent
Else
MsgBox "Selection doesn't include a table"
End If
下面的代碼為所選內(nèi)容中每張表格的第一行應(yīng)用底紋。For Each...Next 循環(huán)用來(lái)循環(huán)遍歷所選內(nèi)容中的每個(gè)表格。
If Selection.Tables.Count >= 1 Then
For Each aTable In Selection.Tables
aTable.Rows ( 1 ) .Shading.Texture =
wdTexture10Percent
Next aTable
End If