Word-vba:识别 table 托管范围
Word-vba: Identifying the table hosting a range
我正在尝试识别范围的 table 索引;或更具体地说:
我有一个包含一些 table 的 Word 文档,每个 table 都包含复选框类型的 ContentControls。我在 ContentControls 中循环,如果类型是 CheckBox,那么我想操作 table 中的文本,但为此我需要知道 table 索引。
我可以确定 CheckBox 实际上是否在 table 中(两种方法之一),并且我可以识别行号和列号,但我还没有想出如何建立 Table 号。
Dim docActive As Document
Dim ContCtrl As ContentControl
Dim TableNo As Integer
Dim UpperLeftText As String
Set docActive = ActiveDocument
For Each ContCtrl In docActive.ContentControls
If ContCtrl.Type = wdContentControlCheckBox Then
If ContCtrl.Range.Information(wdWithInTable)
MsgBox ("RowNumber: " & ContCtrl.Range.Information(wdEndOfRangeRowNumber))
TableNo = ContCtrl.Range.Information(wdTableNumber)) ' This doesn't work, I know, and this is the line for which I need help
MsgBox ("TableRef: " & TableNo)
UpperLeftText = docActive.Tables(TableNo).Rows(1).Cells(1).Range.Text ' Contents of upper left cell assigned to variable UpperLeftText
End If
End If
Next
有什么想法吗?
是的,我可以算出 table 的数量,然后遍历 table,这将是一个已知的数字,但这并不是很优雅...
您不需要使用内容控件在文档 table 集合中的索引来访问内容控件所在的 table。您可以简单地使用内容控件范围的 Tables 集合,即
UpperLeftText = ContCtrl.Range.Tables(1).Rows(1).Cells(1).Range.Text
我正在尝试识别范围的 table 索引;或更具体地说: 我有一个包含一些 table 的 Word 文档,每个 table 都包含复选框类型的 ContentControls。我在 ContentControls 中循环,如果类型是 CheckBox,那么我想操作 table 中的文本,但为此我需要知道 table 索引。 我可以确定 CheckBox 实际上是否在 table 中(两种方法之一),并且我可以识别行号和列号,但我还没有想出如何建立 Table 号。
Dim docActive As Document
Dim ContCtrl As ContentControl
Dim TableNo As Integer
Dim UpperLeftText As String
Set docActive = ActiveDocument
For Each ContCtrl In docActive.ContentControls
If ContCtrl.Type = wdContentControlCheckBox Then
If ContCtrl.Range.Information(wdWithInTable)
MsgBox ("RowNumber: " & ContCtrl.Range.Information(wdEndOfRangeRowNumber))
TableNo = ContCtrl.Range.Information(wdTableNumber)) ' This doesn't work, I know, and this is the line for which I need help
MsgBox ("TableRef: " & TableNo)
UpperLeftText = docActive.Tables(TableNo).Rows(1).Cells(1).Range.Text ' Contents of upper left cell assigned to variable UpperLeftText
End If
End If
Next
有什么想法吗?
是的,我可以算出 table 的数量,然后遍历 table,这将是一个已知的数字,但这并不是很优雅...
您不需要使用内容控件在文档 table 集合中的索引来访问内容控件所在的 table。您可以简单地使用内容控件范围的 Tables 集合,即
UpperLeftText = ContCtrl.Range.Tables(1).Rows(1).Cells(1).Range.Text