用于复制/粘贴单元格到另一个工作簿的宏的宏

问题描述:

我正在将一些单元格从一个关闭的工作簿粘贴到另一个工作簿。 我已成功地粘贴了几个单元格,但是,我想复制从D9开始的单元格,然后每9个单元格直到在SourceWb上找到空单元格,然后将它们粘贴到另一个工作簿TargetWb,从列A第2行开始(B2,C2,D2等)用于复制/粘贴单元格到另一个工作簿的宏的宏

Sub PullClosedData() 

Dim filePath As String 
Dim SourceWb As Workbook 
Dim TargetWb As Workbook 

Set TargetWb = ActiveWorkbook 

filePath = TargetWb.Sheets("System").Range("A1").Value 
Set SourceWb = Workbooks.Open(filePath) 

SourceWb.Sheets("results").Range("D9").Copy 
Destination:=TargetWb.Sheets("Data").Range("A2") 
SourceWb.Sheets("results").Range("D18").Copy 
Destination:=TargetWb.Sheets("Data").Range("B2") 

SourceWb.Save 
TargetWb.Save 
TargetWb.Close False 

MsgBox "Complete!" 

End Sub 

在此先感谢您的支持。

您需要使用动态变量数组和动态范围。

Sub PullClosedData() 

Dim filePath As String 
Dim SourceWb As Workbook 
Dim TargetWb As Workbook 
Dim sWs As Worksheet, tWs As Worksheet 
Dim i As Long, n As Long, r As Long, vR() As Variant 

Set TargetWb = ActiveWorkbook 

filePath = TargetWb.Sheets("System").Range("A1").Value 
Set SourceWb = Workbooks.Open(filePath) 
Set sWs = SourceWb.Sheets("resuts") 
Set tWs = TargetWb.Sheets("Data") 
With sWs 
    r = .Range("d" & Rows.Count).End(xlUp) 
    For i = 9 To r Step 9 
     n = n + 1 
     ReDim Preserve vR(1 To n) '<~~ increase dynamic array. 
     vR(n) = .Range("d" & i) 
    Next i 
End With 
tWs.Range("a2").Resize(1, n) = vR 


SourceWb.Save 
TargetWb.Save 
TargetWb.Close False 

MsgBox "Complete!" 

End Sub 
+0

感谢您的及时答复。 –

+0

但是,它会引发1004错误,应用程序定义或对象定义的错误。我在行之前添加了一个“点”,但现在它引发类型不匹配错误13. –

+0

@AlfredS,哦,我现在认识到你没有定义文件路径。 –