通过VBA访问MS Word中的嵌套表

时间:2016-09-05 09:18:54

标签: vba ms-word word-vba

我有一个Word文档,其中包含300多个表,每个表只有一行和两列。 在其中一个表的每一个的第一列中,有一些文本+另一个表。 我需要更改这些嵌套表的样式(其他表的样式不应该更改),但我无法选择它们。

我尝试了以下内容:

webView.stringByEvaluatingJavaScriptFromString("document.getElementsByTagName('body')[0].style.fontFamily =\"HelveticaNeue\"");

我也尝试过:

Dim mytable As Table
Dim nestedtable As Table

For Each mytable In ActiveDocument.Tables
    For Each nestedtable In mytable
        nestedtable.Select
    Next
Next

我如何选择这些嵌套表?

2 个答案:

答案 0 :(得分:1)

我没有包含Select部分,因为您需要不惜一切代价避免这种情况,因为您将继续使用VBA编程。

同时尝试为您声明的变量提供更具描述性的名称,这样您就可以在以后忘记所声明的多个变量时训练大脑。

Sub ModifyNestedTables()

    Dim DocumentBodyTable As Table
    Dim NestedTable As Table

    For Each DocumentBodyTable In ActiveDocument.Tables
        For Each NestedTable In DocumentBodyTable.Tables

            With NestedTable
                .ApplyStyleRowBands = False
                .ApplyStyleHeadingRows = False
                .ApplyStyleFirstColumn = False
            End With

        Next NestedTable
    Next DocumentBodyTable

End Sub

答案 1 :(得分:0)

好的,这很令人尴尬,经过10多分钟的搜索,我找到了自己问题的答案。无论如何,对于将来遇到同样问题的人来说,这就是你如何访问嵌套表(并改变样式):

Dim mytable As Table
Dim nestedtable As Table
For Each mytable In ActiveDocument.Tables
    For Each nestedtable In mytable.Tables
        nestedtable.Select
        Selection.Tables(1).ApplyStyleRowBands = False
        Selection.Tables(1).ApplyStyleHeadingRows = False
        Selection.Tables(1).ApplyStyleFirstColumn = False
    Next
Next