在VB.Net中访问Word的嵌套表?

时间:2019-02-07 09:49:41

标签: vb.net ms-word

我有一个word文档,其中包含一些表,其中每个表都有另一个嵌套表。

我正在尝试从VB.Net代码填充这些表...实际上发生的是VB.Net无法访问嵌套表。

我什至试图遍历单元格并找出单元格是否确实包含表..但仍然无法正常工作...

感谢任何人都可以提出想法

1 个答案:

答案 0 :(得分:0)

找出一个单元格是否包含一个或多个嵌套表的诀窍是查询Cell.Tables.Count。如果返回的值大于零,则存在嵌套表。

由于您没有提供任何代码作为起点,因此以下示例是通用示例,可​​以适应任何情况。它循环表中的所有单元格,包括嵌套表中的所有单元格。它可以在VB.NET或VBA中使用:与VBA不同的两行被注释掉,就在VB.NET行的上方。对于VB.NET,假定存在一个名为wdApp的类级字段,该字段代表Word.Application,并且导入了命名空间System.Diagnotics

(注意:同样的方法在C#中也适用,只是语法略有不同。)

Sub LoopAllCellsIncludingNestedTables()
    Dim counter As Long
    Dim tbl As word.Table

    counter = 0
    'Set tbl = ActiveDocument.Tables(1)
    tbl = wdApp.ActiveDocument.Tables(1)
    counter = LoopCells(counter, tbl)
    Debug.Print counter
End Sub

Function LoopCells(counter As Long, tbl As word.Table) As Long
    Dim cel As word.Cell
    Dim nestedTbl As word.Table

    For Each cel In tbl.Range.Cells
        counter = counter + 1
        If cel.Tables.Count > 0 Then
            For Each nestedTbl In cel.Tables
                counter = LoopCells(counter, nestedTbl)
            Next
        End If
    Next
    'LoopCells = counter
    Return counter
End Function