VIP标识 上网做生意,首选VIP会员| 设为首页| 加入桌面|| 手机版| RSS订阅
雷竞技电竞
,关注食品安全,探讨食品技术

利用VBA 处理表格

放大字体缩小字体发布日期:2006-06-15


      表格功能是Word 一个非常重要的功能,也是用户经常使用的一 项功能,在Word 2000 中,增加了不少新的功能。如果利用VBA 自 动处理表格将使用户的效率有极大的提高。

      12.6.1 向表格单元格插入文字
      下面的代码向活动文档的第一个表格的第一个单元格插入文字。 Cell 方法返回单个的 Cell 对象。Range 属性返回一个 Range 对 象。Delete 方法用来删除现有的文字,而 InsertAfter 方法用来 插入"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 结构用来循环遍历表格中的每个单元格。在 For Each...Next 结构中,InsertAfter 方法用来向表格单元格(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 显示每个单元格的内容
      下面的代码返回并显示文档第一张表格第一行中每个单元格中 的内容。

      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 将文本转换为表格
      下面的代码在活动文档的开头插入以制表符分隔的文本,然后将 这些文本转换为一张表格。

      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 返回每个表格单元格的内容
      下面的代码定义一个数组,使该数组的元素个数等于文档第一个 表格中的单元格数(假定 Option Base 1)。For Each...Next 结 构用来返回每个表格单元格的内容,并将文字指定给相应的数组元 素。

      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 将活动文档中的所有表格复制到一篇新文档
      下面的代码将当前文档中的表格复制到新文档中。

      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 引用活动元素
      要引用活动段落、表格、域或其他文档元素,可使用 Selection属性返回一个 Selection 对象。通过 Selection 对象,可以访问 所选内容中的所有段落或第一个段落。

      下面的代码为所选内容的第一张表格第一行应用底纹。
      Selection.Tables ( 1 ) .Rows ( 1 ) .Shading.Texture =
      wdTexture10Percent

      如果所选内容中没有表格,则会产生错误。使用 Count 属性可以判定所选内容中是否有表格。下面的代码为所选内容的第一张表格第一行应用底纹。

      If Selection.Tables.Count >= 1 Then
      Selection.Tables(1).Rows(1).Shading.Texture =
      wdTexture10Percent
      Else
      MsgBox "Selection doesn't include a table"
      End If

      下面的代码为所选内容中每张表格的第一行应用底纹。For Each...Next 循环用来循环遍历所选内容中的每个表格。

      If Selection.Tables.Count >= 1 Then
      For Each aTable In Selection.Tables

      aTable.Rows ( 1 ) .Shading.Texture =
      wdTexture10Percent
      Next aTable
      End If



      推荐图文
      推荐食品专题
      点击排行
      Processed in 0.021 second(s), 17 queries, Memory 0.88 M
      Baidu
      map