首页 > 解决方案 > 将表格从 excel 粘贴到 Word,然后适合窗口并均匀分布列

问题描述

我正在尝试将表格从 excel 复制并粘贴到 word,但是由于表格大于工作表,因此超出了页面范围。

我发现这有.AutoFitBehavior (wdAutoFitWindow)帮助,但它会根据单元格中的信息分配列宽。因此,有些列非常薄,反之亦然。我希望它们均匀分布,只有行大小不同。

据我所知.Tables(3).Columns.DistributeWidth,应该有助于均匀分布。

但是我无法将这两条线结合起来。根据代码变体,我尝试了其中任何一个都可以,但从不同时使用。

我当前的相关代码部分:

tbl.copy

Set objDoc = objWord.Documents.Add(Template:="whatever", NewTemplate:=False, DocumentType:=0)
With objDoc
    .Range.Bookmarks("lentele").Range.PasteExcelTable _
         LinkedToExcel:=False, _
         WordFormatting:=False, _
         RTF:=True
End With

Set WordTable = objDoc.Tables(3)
WordTable.AutoFitBehavior (wdAutoFitWindow)

With objDoc
    .Tables(3).Columns.DistributeWidth
End With

附加问题:如果插入表中的所有文本都减小到字体大小 8,那就太好了,但是我收到错误,然后我输入这一行objDoc.Tables(3).Font.Size = 8

标签: excelvbams-word

解决方案


如果您预先在 Word 模板中插入一个格式适当(无自动宽度)的表格,其中只有表格的第一行(例如标题行,甚至是空行),您可以使用 PasteAppendTable 方法,这将强制附表采用相同的列宽。如果您需要为此使用虚拟行,则可以在之后将其删除。

不过,在保留当前方法的同时:

Set objDoc = objWord.Documents.Add(Template:="whatever", NewTemplate:=False, DocumentType:=0)
tbl.Copy
With objDoc.Range.Bookmarks("lentele").Range
    .PasteExcelTable _
         LinkedToExcel:=False, _
         WordFormatting:=False, _
         RTF:=True
    .End = .End + 1
    With .Tables(1)
        .Range.Font.Size = 8
        .AutoFitBehavior (wdAutoFitWindow)
        .AllowAutoFit = False
        .Columns.DistributeWidth
    End With
End With

至于错误 - objDoc.Tables(3).Range.Font.Size = 8


推荐阅读