首页 > 解决方案 > Word Vba:获取第一个表格边界的位置

问题描述

我正在用 Word 用 VBA 编写一些代码,我想获得表格第一个边界线的位置,如图所示 在此处输入图像描述

如上图所示,我想均衡第一个表格边距和第二个表格边距(不确定“边距”是否是正确的词)。目的是使第一个表和第二个表的列宽相等并将它们组合起来,将它们合并到一个表中。Word 文档有大约 20 个单独的表格,因此我想将它们全部合并到一个表格中。请注意,您在上面看到的空表已删除数据以保留机密信息。

到目前为止我已经尝试过:

Public Sub CorrectTables()
    Dim mainTable As Table
    Dim secondTable As Table
    
    Dim firstColWidth As Integer
    Dim secondColumnWidth As Integer
    Dim thirdColumnWidth As Integer
    Dim fourthColumnWidth As Integer
    Dim fiftColumnWidth As Integer

    'Get current table
    Set mainTable = ActiveDocument.Tables(1)
    
    **firstColMarginPos = mainTable.LeftPadding** This is where i need some help to set the position
    firstColWidth = mainTable.Columns(1).Width
    secondColumnWidth = mainTable.Columns(2).Width
    thirdColumnWidth = mainTable.Columns(3).Width
    fourthColumnWidth = mainTable.Columns(4).Width
    fiftColumnWidth = mainTable.Columns(5).Width
    
    Dim currentTableCount As Integer
    
    While ActiveDocument.Tables.Count <> 1
        currentTableCount = ActiveDocument.Tables.Count
        Set secondTable = ActiveDocument.Tables(2)
        secondTable.LeftPadding = firstColMarginPos
        secondTable.Columns(1).Width = firstColWidth
        secondTable.Columns(2).Width = secondColumnWidth
        secondTable.Columns(3).Width = thirdColumnWidth
        secondTable.Columns(4).Width = fourthColumnWidth
        secondTable.Columns(5).Width = fiftColumnWidth
        
        Selection.Tables(1).Select
        Selection.Collapse WdCollapseDirection.wdCollapseEnd
        
        While (ActiveDocument.Tables.Count - currentTableCount = 0)
            Selection.Delete Unit:=wdCharacter, Count:=1
        Wend
    Wend
    
    
    
    
End Sub

标签: vbams-word

解决方案


我想出了答案。对于第一个表,我可以得到缩进:

firstColMarginPos = mainTable.Rows.LeftIndent

然后我可以用它来设置第二个表的值:

secondTable.Rows.SetLeftIndent LeftIndent:=firstColMarginPos, RulerStyle:=wdAdjustFirstColumn

推荐阅读