Excel VBA代码,用于将多个范围复制到另一工作簿中的特定工作表

Excel VBA代码,用于将多个范围复制到另一工作簿中的特定工作表,excel,vba,worksheet,Excel,Vba,Worksheet,我在这里找到了一些代码,可以将我的数据复制到另一张工作正常的工作表中。我正在尝试扩展它,以便它复制到另一个工作簿和特定的工作表 Sub Put_Data() Dim lastrowDB As Long, lastrow As Long Dim arr1, arr2, i As Integer With Sheets("GasMe18-19") lastrowDB = .Cells(.Rows.Count, "A").End(xlUp).row + 1 End With arr1 =

我在这里找到了一些代码,可以将我的数据复制到另一张工作正常的工作表中。我正在尝试扩展它,以便它复制到另一个工作簿和特定的工作表

Sub Put_Data()
Dim lastrowDB As Long, lastrow As Long
Dim arr1, arr2, i As Integer

With Sheets("GasMe18-19")
    lastrowDB = .Cells(.Rows.Count, "A").End(xlUp).row + 1
End With

arr1 = Array("A", "G", "H", "L")
arr2 = Array("Q", "R", "S", "T")

For i = LBound(arr1) To UBound(arr1)
    With Sheets("GasMe18-19")
         lastrow = Application.Max(4, .Cells(.Rows.Count,   arr1(i)).End(xlUp).row)
         .Range(.Cells(4, arr1(i)), .Cells(lastrow, arr1(i))).Copy
         Sheets("Sheet1").Range(arr2(i) & 2).PasteSpecial xlPasteValues
    End With
Next
Application.CutCopyMode = False
End Sub

如何对此进行修改以将数据范围放入另一个工作簿?我把Sheet1放在家庭工作簿中,一切看起来都很好,我喜欢现有的代码库。原始工作簿.工作表有4列数据,我每隔几天添加一次。然后复制并粘贴到另一个工作簿2.WorkSheet2中进行打印。我更喜欢将所有内容从第4行复制到第4列的最后一行。

您需要使用相关工作簿限定您的范围

Dim wbSource As Workbook, wbTarget As Workbook
Set wbSource = ThisWorkbook
Set wbTarget = Workbooks("TheTargetWBName")

...

For i = LBound(arr1) To UBound(arr1)
    With wbSource.Worksheets("GasMe18-19")
         lastrow = Application.Max(4, .Cells(.Rows.Count, arr1(i)).End(xlUp).Row)
         .Range(.Cells(4, arr1(i)), .Cells(lastrow, arr1(i))).Copy
         wbTarget.Worksheets("Sheet1").Range(arr2(i) & 2).PasteSpecial xlPasteValues
    End With
Next
请注意,
sheets(“Sheet1”).Range(arr2(i)&2).pasteValues
行现在是如何使用先前声明的变量
wsTarget
与目标工作簿完全限定的。此变量首先使用以下行设置为工作簿的名称:

Set wbTarget = Workbooks("TheTargetWBName")
如果目标工作簿未打开,则只需更改为

Set wbTarget = Workbooks.Open("TheTargetWBName")

您需要使用有问题的工作簿来限定您的范围

Dim wbSource As Workbook, wbTarget As Workbook
Set wbSource = ThisWorkbook
Set wbTarget = Workbooks("TheTargetWBName")

...

For i = LBound(arr1) To UBound(arr1)
    With wbSource.Worksheets("GasMe18-19")
         lastrow = Application.Max(4, .Cells(.Rows.Count, arr1(i)).End(xlUp).Row)
         .Range(.Cells(4, arr1(i)), .Cells(lastrow, arr1(i))).Copy
         wbTarget.Worksheets("Sheet1").Range(arr2(i) & 2).PasteSpecial xlPasteValues
    End With
Next
请注意,
sheets(“Sheet1”).Range(arr2(i)&2).pasteValues
行现在是如何使用先前声明的变量
wsTarget
与目标工作簿完全限定的。此变量首先使用以下行设置为工作簿的名称:

Set wbTarget = Workbooks("TheTargetWBName")
如果目标工作簿未打开,则只需更改为

Set wbTarget = Workbooks.Open("TheTargetWBName")

很好,但是如何检查目标工作簿是否在我的Excel实例中打开并使用适当的wbTarget?很好,但是如何检查目标工作簿是否在我的Excel实例中打开并使用适当的wbTarget?