【问题标题】:How Do You Copy Range of Cells Until Last Row from Another Workbook in Excel VBA如何从 Excel VBA 中的另一个工作簿中复制直到最后一行的单元格范围
【发布时间】:2019-06-08 23:02:13
【问题描述】:

我正在尝试复制一系列单元格,直到我的主工作簿已经打开并激活的另一个工作簿中最后使用的行。范围需要从 C2 开始到 M 列,然后直到第一个空白行。

到目前为止,我的代码复制了正确的单元格列,但向下延伸到使用的行之外,进入空白行。我附上了截图。将复制的单元格粘贴到主工作簿中成功。

Workbooks.Open ("C:\Users\user\Documents\Maintenance Department\General\Equipment Documentation\Holding Furnace\Readings\Data Logs\Flow Sensor Monthly Alarm Log - Inductor.xlsx")
ThisWorkbook.Activate

LastRow = Cells(Rows.Count, "A").End(xlUp).Row

Workbooks("Flow Sensor Monthly Alarm Log - Inductor.xlsx").Worksheets("Sheet1").Range("C2:M2" & LastRow).Copy

ThisWorkbook.Sheets("Data").Range("C" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues

【问题讨论】:

  • 这是因为您从要复制的工作表中获取最后一行,而不是刚刚打开的工作簿:LastRow = Workbooks("Flow Sensor Monthly Alarm Log - Inductor.xlsx").Worksheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
  • 我用您回复中的代码替换了该行,复制的单元格现在向下延伸到第 26 行而不是第 21 行
  • 另外Range("C2:M2" & LastRow) 将返回错误的行,如果LastRow 为6,则范围变为Range("C2:M26") 而不是Range("C2:M6") 你想要Range("C2:M" & LastRow)
  • 完美!!谢谢!!

标签: excel vba


【解决方案1】:

尝试使用WorkbookWorksheet 对象而不是Activate

Dim WB As Workbook
Dim DestSht As Worksheet
Dim SourceSht As Worksheet

Set DestSht = ThisWorkbook.Worksheets("Data")

Set WB = Workbooks.Open("C:\Users\user\Documents\Maintenance Department\General\Equipment Documentation\Holding Furnace\Readings\Data Logs\Flow Sensor Monthly Alarm Log - Inductor.xlsx")
Set SourceSht = WB.Worksheets("Sheet1")

LastRow = SourceSht.Cells(Rows.Count, "A").End(xlUp).Row

SourceSht.Range("C2:M" & LastRow).Copy
DestSht.Range("C" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    相关资源
    最近更新 更多