如何确定MS Word宏中表格的页码?

yan*_*kee 5 vba word-vba

我在MS Word 2016中有一个200多页甚至更多表的文档.我需要将奇数页上的所有表格对齐到左边,我需要在右边对齐的偶数页面上的所有表格.除了一个或两个表,我可以手动修改,如果需要,没有任何表跨越多个页面.运用

Dim oTable As Table
For Each oTable In ActiveDocument.Tables
    oTable.Rows.Alignment = wdAlignParagraphRight
Next oTable
Run Code Online (Sandbox Code Playgroud)

我可以将所有表格对齐到右边.当使用wdAlignParagraphLeft而不是wdAlignParagraphRight我可以将所有表格对齐到左边.但我无法弄清楚如何获取表的页码,以便我可以根据表所在的页码来分配对齐.

(这个想法是,如果作为一本书打印,表格总是在内侧.如果有更好的方法来完成,我会听.如果打印成书,两页相邻,表格应该在这样的内侧:)

+-------------------------------+
|    Even Page  |   Odd page    |
+---------------+---------------+
|       |Table| | |Table|       |
|               |               |
+-------------------------------+
Run Code Online (Sandbox Code Playgroud)

Jim*_*son 5

Yankee,您可以确定特定表所使用的页码:

oTable.Range.Information(wdActiveEndPageNumber)
Run Code Online (Sandbox Code Playgroud)

因此,要遍历文档中的所有表格并根据它们所在页面的奇数或偶数性质对齐它们,您将使用:

Dim oTable As Table
Dim PageNo As Integer

For Each oTable In ActiveDocument.Tables
    PageNo = oTable.Range.Information(wdActiveEndPageNumber)
    If PageNo Mod 2 = 0 Then    'The page number is EVEN.
        oTable.Rows.Alignment = wdAlignParagraphRight
    Else                        'The page number is ODD.
        oTable.Rows.Alignment = wdAlignParagraphLeft
    End If
Next oTable
Run Code Online (Sandbox Code Playgroud)

如果您有任何其他问题,请不要犹豫.