vba - 如何访问 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
解决方案
大多数集合,如表格、段落等,都可以通过数字访问: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
推荐阅读
- mysql - 如何在不修改主键 ID 的情况下向上或向下移动数据库表内容?
- python - 正则表达式解析python中的对话
- python - 尝试使用 Python 创建 1000 个随机文件夹 - os.makedirs()
- python - 能够为 NBA 每日领袖抓取网站数据。但是 MaxRetryError 的问题
- python-3.x - 如何打印 numpy.ndarray 的内容?
- python - 如何使用python地址代替变量?
- html - 纯 CSS:从上到下截断多个段落的文本溢出
- javascript - MATERIAL-UI:未捕获的 ReferenceError:未定义 createSvgIcon
- python - Tensorflow 2x:参数 include_optimizer 究竟对 tensorflow.keras.save_model 有什么影响
- c# - 上传图片并在 asp.net core mvc 中显示