2

对 VBA 来说非常新,但我们的客户希望 1,850 页 Word 表中的所有数据正确对齐。我认为这在 VBA 中很容易。我正在努力解决这个问题,我确信我可以自己解决,但最后期限迫使我寻求帮助。因此,如果我错过了已发布的解决方案,我会提前道歉。

作为一个例子,他们想要这个:

在此处输入图像描述

要这样:

在此处输入图像描述

所以我有:

 Dim oTable As Table
    Dim oRow As Row

    For Each oTable In ActiveDocument.Tables
     For Each oRow In oTable.Rows

但我不知道如何只遍历表格的主体。前 4 行(表格标题)也合并到一个单元格中,并且第一列仍然左对齐。帮助,以及我的下一轮:)

4

1 回答 1

5

通常我不是“请为我编写代码”的超级粉丝,但我对 Word 中的 VBA 做得还不够,我想自己学习一些。

这将使您大部分时间到达那里。

您目前没有提供足够的信息来让我保证该if声明适用于整个文档,但您应该可以从这里开始。


Sub alignTableElementsRight()
   Dim oTable As Table
   Dim oRow As Row

   Dim i As Integer
   Dim dataTable As Boolean

   For Each oTable In ActiveDocument.Tables
    'this will be set once you are in the "table" part and
    'not headings
    dataTable = False

    For Each oRow In oTable.Rows

       'you will need custom logic here to determine what your if statement
       'is to properly execute on the right row, this is going to depend based on your table
       'format, etc. This checks if a leftmost column heading is "65 to 66"
       If (InStr(oRow.Cells(1).Range.Text, "65 to 66") > 0) Then
         dataTable = True
       End If

       'if you are in the datatable, move all values to align right in each row following
       If (dataTable = True) Then
           For i = 2 To oRow.Cells.Count
               oRow.Cells(i).Range.ParagraphFormat.Alignment = wdAlignParagraphRight
           Next i
       End If


    Next oRow

   Next oTable
End Sub
于 2013-05-29T17:10:27.347 回答