从打开的工作簿中复制单元格以使用VBA粘贴到另一个

时间:2018-08-22 15:53:34

标签: excel excel-vba

对于VBA来说是非常新的东西,很抱歉,我没有任何代码可供任何人评估,但是我希望我的查询有一个简单的解决方案。 在我的第一个活动工作簿中,列A有一个数字列表,从单元格A1开始,每次列出不同的行数。 我想复制包含信息的所有A列单元格,然后将它们粘贴到另一个工作簿中(如果第二个工作簿在此过程中可以保持关闭状态会更好)。 我希望的第二个工作簿中的粘贴位置再次位于A列内,但位于第一个空行中。即,我希望第二个工作簿是第一个工作簿曾经拥有的所有数据列A的列表。 很抱歉,如果我的问题不清楚,但希望你们能帮忙!

谢谢,期待您的投入!

1 个答案:

答案 0 :(得分:0)

将此代码粘贴到工作簿的VBA编辑器中的一个具有源数据的新模块中(打开VBA编辑器:ALT + F11),然后运行宏“ CopyToAnotherWorkbook”。

在运行之前,指定目标工作簿路径,提示在代码中。

Sub CopyToAnotherWorkbook()

Application.ScreenUpdating = False

Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws As Worksheet: Set ws = wb.ActiveSheet
Dim LastRow_wb%: LastRow_wb = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim arr() As Variant
ReDim arr(0 To LastRow_wb - 1)

For i = 1 To LastRow_wb
    arr(i - 1) = ws.Cells(i, 1)
Next i

Dim wb2 As Workbook: Set wb2 = Workbooks.Open("C:\Book2.xlsx") ' <- Paste your Link to the Workbook here!

Dim ws2 As Worksheet: Set ws2 = wb2.Sheets(1)
Dim LastRow_wb2%: LastRow_wb2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row + 1

If LastRow_wb2 = 2 Then
    LastRow_wb2 = 1
End If

ws2.Range("A" & LastRow_wb2 & ":A" & LastRow_wb2 + UBound(arr)).Value = WorksheetFunction.Transpose(arr)

Application.ScreenUpdating = True
wb2.Close True
Set ws2 = Nothing
Set wb2 = Nothing
Set ws = Nothing
Set wb = Nothing

End Sub