首页 文章

仅将Excel中的值复制粘贴到Word中

提问于
浏览
1

我一直在使用这个网站一段时间,并且通常会研究我的所有问题,但是这个问题让我感到难过了几天 .

我有一个Excel工作簿,其中包含允许用户输入特定数据的工作表,一旦使用宏,将创建专门为每个宏格式化的Word文档 .

我正在尝试从excel复制范围,但并非所有行都将完成 . 范围目前是25行,但大多数用户只使用8-12:

Set tbl = ThisWorkbook.Worksheets(Sheet4.Name).Range("A8:D33")

我可以复制此范围并将其作为表粘贴到Word中,但我也得到空行 . 在Excel中,我只是简单.PasteSpecial Paste:= xlPasteValues但这与Word格式不兼容 .

下面是我将该范围复制到我的Word文档中的当前代码:

With Doc.Paragraphs(21).Range
    tbl.Copy
    Doc.Paragraphs(21).Range.PasteExcelTable LinkedToExcel:=False, _
    WordFormatting:=False, _
    RTF:=False
    '.PageSetup.LeftMargin = "40"
    '.PageSetup.RightMargin = "40"

    Set wtbl = Doc.Tables(1)
    wtbl.AutoFitBehavior (wdAutoFitContent)
    wtbl.Borders.Enable = True
        With wtbl.Rows(1)
            .Height = 10
            .Cells.VerticalAlignment = wdAlignVerticalBottom
        End With
    'wtbl.Rows.Cells.VerticalAlignment = wdCellAlignVerticalBottom
    'wtbl.Rows.Height = 15

    'Doc.Paragraphs(23).AutoFitBehavior (wdAutoFitWindow)

End With

2 回答

  • 0

    您可以在这样的列中找到最后使用的单元格 . 假设所有列都包含数据并且数据条目来自第8行向下移动,这应该可以解决问题:

    With Sheet4
        Dim lastRow As Long
        lastRow = .Range(.Cells(8, 1), .Cells(33, 1)).End(xlDown).Row
        Set tbl = .Range(.Cells(8, 1), .Cells(lastRow, 4))
    End With
    
  • 1

    我认为 CurrentRegion 是你的朋友:

    Set tbl = Range("A8").CurrentRegion
    

    如果您获得了不需要的任何额外列,则可以始终使用“调整大小”属性 .

相关问题