0

我正在使用 VBA 宏在 word 文档中插入行(两列)。问题是插入的行没有填满整个页面,并且所有列的宽度都不相同:

在此处输入图像描述

我的问题是:如何为所有列赋予相同的宽度并扩展表格以填充页面宽度?

这是我的功能:

Private Function CreateWordDoc(ByVal wrdApp As Word.Application, ByRef Objects() As OwnClass, ByVal sFilename As String, ByVal sPath As String)
    Dim i As Integer
    Dim wrdDoc As Word.Document
    Dim MyObj As OwnClass

    Dim wrdTppTable As Word.Table

    Set wrdDoc = wrdApp.Documents.Add(sFilename, Visible:=True)

    Set wrdTppTable = wrdDoc.Tables(2)

    For i = 0 To UBound(Objects) - 1
        Set MyObj = Objects(i)
        ' Add a row to the table and select it
        wrdTppTable.Rows.Add.Select
        ' Work with the selected row
        With wrdApp.Selection.Range
            ' Make sure the row is on two columns
            .Cells.Split 1, 2, True
            ' Set the text font parameters
            With .Font
                .ColorIndex = wdBlack
                .name = "Arial"
                .size = 11
                .Bold = False
            End With
            ' Write text in the cell
            .Text = MyObj.GetKey & ": " & MyObj.GetValue
            ' Then select the next cell in the row
            .Next.Select
        End With
        ' Work with the second column of the row
        wrdApp.Selection.Cells.SetWidth 54, RulerStyle:=wdAdjustFirstColumn
        With wrdApp.Selection.Range
            With .Font
                .ColorIndex = wdBlack
                .name = "Arial"
                .size = 11
                .Bold = False
            End With
            ' Write the cell
            .Text = MyObj.GetId
        End With
    Next
End Function
4

1 回答 1

0

您可以做的最好的事情是在开始时设置列的尺寸,然后再执行任何修改。示例代码:

Dim availableWidth As Integer
availableWidth = wrdDoc.PageSetup.PageWidth - wrdDoc.PageSetup.LeftMargin - wrdDoc.PageSetup.RightMargin

With wrdTppTable
   .Columns.Add 'Adding the required column
    'Resizing both columns on account of the available space
   .Columns(1).Width = availableWidth / 2
   .Columns(2).Width = availableWidth / 2
   .Cell(1, 1).Merge .Cell(1, 2)
End With

在此代码之后,您可以开始迭代单元格并执行您想要的操作,只需添加行。Cells.Split仅在真正需要的情况下使用;例如:在第三行中,您希望有三列,其中两列适合主要的第二列。

于 2013-08-19T15:24:53.353 回答