我一直在使用这个网站一段时间,并且通常研究我的所有问题,但是这个问题让我感到难过了几天。
我有一个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
答案 0 :(得分:1)
您可以在这样的列中找到最后使用过的单元格。假设所有列都包含数据并且数据条目来自第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 :(得分:0)
我认为CurrentRegion
是您的朋友:
Set tbl = Range("A8").CurrentRegion
如果您得到不需要的任何额外列,则始终可以使用Resize属性。