【问题标题】:Select range of cells and save to new document选择单元格范围并保存到新文档
【发布时间】:2019-05-09 09:50:21
【问题描述】:

我正在尝试选择工作表中的单元格并将它们导出到新文档。

工作表有多个列,但是我只想选择从 C 到 E 的列,从第四行到 E 列中非空白的最后一行。

我写的代码如下:

Sub SelectExcelCopy()
Dim appWD As New Word.Application
appWD.Visible = True
Range("C4", Range("E4").End(xlDown).End(xlToRight)).Copy
    appWD.Documents.Add
    appWD.Selection.Paste
    appWD.ActiveDocument.SaveAs Filename:="File 1"
    appWD.ActiveDocument.Close
appWD.Quit
End Sub

代码在新的 Excel 工作表中按预期工作(仅用于测试目的),但在我当前的工作簿中却没有。 我当前工作簿中的工作表充满了从 A 列到 C 列的大量数据。即使在 E 列中只有两个条目(E4 和 E5),word 文档中的表格也有 44 列和 134 行。

我已经验证了工作表,并且 E 列中的单元格是空白的,除了我希望它们在表格中的单元格。

为了实现我的目的,我应该对代码进行哪些更改? 谢谢!

【问题讨论】:

  • 您选择的范围有误。您需要设置最后一行变量并使用类似这样的东西...Range("A1:D" & lRow).Copy 不要在最后一行变量中使用 D 列

标签: excel vba


【解决方案1】:

这是一个简单的例子:

Dim lRow As Long
lRow = Sheet1.Cells(Rows.Count, 5).End(xlUp).Row

Sheet1.Range("C4:E" & lRow).Copy

【讨论】:

  • 谢谢!这个公式仍然比非空白的实际行多。它为我生成 3 页行(78 个空行)。我计划的想法是从最后一列中选择最后一行变量。
  • 您不想要 C 列中的所有数据,只需要 E 列中最后使用的单元格的数据,对吗?
  • 没错。例如,C 和 D 有 10 行,E 有 4 行。我希望代码选择并复制从 C1 到 E4 的范围。
  • @MarianV。将 lRow 变量更改为Rows.Count, 5,它将选择 E 列中最后使用的单元格。
  • 我不知道“Rows.Count”的重要性。它现在按预期工作。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-17
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
  • 2020-01-25
  • 1970-01-01
相关资源
最近更新 更多