Word-vba:识别托管范围的表

Posted

技术标签:

【中文标题】Word-vba:识别托管范围的表【英文标题】:Word-vba: Identifying the table hosting a range 【发布时间】:2022-01-11 16:54:54 【问题描述】:

我正在尝试识别范围的表索引;或更具体地说: 我有一个带有一些表格的 Word 文档,每个表格都包含复选框类型的 ContentControls。我正在循环 ContentControls,如果类型是 CheckBox,那么我想操作表格中的文本,但要做到这一点,我需要知道表格索引。 我可以确定 CheckBox 是否实际上在一个表中(两种方法之一),我可以识别行号和列号,但我还没有弄清楚如何建立表号。

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

有什么想法吗?

是的,我可以算出表格的数量,然后循环遍历这些表格,这将是一个已知的数字,但这并不是很优雅...

【问题讨论】:

【参考方案1】:

您不需要通过使用其在文档的表集合中的索引来访问内容控件所在的表。您可以简单地使用内容控件范围的 Tables 集合,即

UpperLeftText = ContCtrl.Range.Tables(1).Rows(1).Cells(1).Range.Text

【讨论】:

太棒了 - 非常感谢!

以上是关于Word-vba:识别托管范围的表的主要内容,如果未能解决你的问题,请参考以下文章

如何识别核心数据托管对象模型——哈希?

识别 macOS 上的托管文件夹

Firebase托管中无法识别角度材料

无法创建或更改没有主键的表 - Laravel DigitalOcean 托管数据库

应用程序范围的托管 bean 死了吗?

使用非托管 DLL 来自 .NET 的系统范围外壳挂钩