首页 > 解决方案 > 如何访问 Word 文档中的特定表格

问题描述

我有一个包含 10 个表格的 docx 文档。我想访问表 3、4、8 和 9 来为表的内容着色。如何通过 VBA 访问特定表?

我知道这段代码将访问所有表,但不是全部,我只想在特定表上使用我的代码:

Dim oTbl As Word.Table
For Each oTbl In ActiveDocument.Tables

现在的代码将为表格着色,这是我的重点:

Sub colourSelectedTable()

Dim c As Word.Cell

If Selection.Information(wdWithInTable) Then
  For Each c In Selection.Tables(1).Range.Cells

    If InStr(c.Range.Text, Chr(37)) > 0 And Val(c.Range.Text) >= 110 Then
    c.Shading.BackgroundPatternColor = rgb(255,124,103)

    ElseIf InStr(c.Range.Text, Chr(37)) > 0 And Val(c.Range.Text) < 0 Then
    c.Shading.BackgroundPatternColor = rgb(255,124,103)

    ElseIf InStr(c.Range.Text, Chr(37)) > 0 And Val(c.Range.Text) <= 100 Then
    c.Shading.BackgroundPatternColor = rgb(136,241,142)

    ElseIf InStr(c.Range.Text, Chr(37)) > 0 And Val(c.Range.Text) > 100 And Val(c.Range.Text) < 110 Then
    c.Shading.BackgroundPatternColor = rgb(255,227,132)

    ElseIf Val(c.Range.Text) = "Good" Then
    c.Shading.BackgroundPatternColor = rgb(136,241,142)  

    ElseIf Val(c.Range.Text) = "Fair" Then
    c.Shading.BackgroundPatternColor = rgb(255,227,132)  

    ElseIf Val(c.Range.Text) = "Satisfactory" Then
    c.Shading.BackgroundPatternColor = rgb(255,227,132)  

    ElseIf Val(c.Range.Text) = "Not Satisfactory" Then
    c.Shading.BackgroundPatternColor = rgb(255,124,103)  

  End If

  Next
  End If
  End Sub

标签: vbams-word

解决方案


大多数集合,如表格、段落等,都可以通过数字访问:Document.Tables(1)

Dim i As Long, c As Word.Cell, doc As Document
Set doc = ActiveDocument

For i = 1 To doc.Tables.Count
    If i = 3 Or i = 4 Or i = 8 Or i = 9 Then
        For Each c In doc.Tables(i).Range.Cells
            ' your code here 
        Next
    End If
Next

推荐阅读