2010-08-25 182 views
0

我试图从相同范围(A4:A8)中的三个工作簿(一次一个)复制数据并粘贴他们成为一个新的工作簿。唯一的解决办法是我试图让粘贴部分每个循环下移10行。Excel宏:粘贴时出错 - 向下移动10行 - 粘贴 - 10行 - 粘贴等

我在PasteSpecial行上收到错误消息。我不知道为什么?

(我是一个Excel宏新手,但我给它一个去)

任何指导/指针是极大的赞赏。

非常感谢

Mike。

Dim TestWorkbook as variant, 
Dim mytest as variant 
TestWorkbook= array(“test1”, “test2”, “test3”) ‘3 source files 
i = 0 
For Each mytest In TestWorkbook 
Workbooks.Open Filename:="S:\ExcelWork\" + TestWorkbook + "_Work.xls" 
Range("a4:a8").Copy 
ActiveWorkbook.Close 
Workbooks.Open Filename:="S:\Result_Workbook.xls" 
Range("l" & 5 + i).PasteSpecial Paste:=xlPasteValues `THE PROBLEM IS HERE 
i = i + 10 
Next 
+0

是什么错误居然说? – Michael 2010-08-25 15:01:20

+0

我不确定您可以在工作簿关闭后保留副本。尝试在关闭第一个工作簿之前粘贴它(当然,您必须确保选择您需要的确切表格)。 – 2010-08-25 16:04:21

回答

2

几个问题固定“看评论

Sub a() 
Dim TestWorkbook As Variant 
Dim mytest As Variant 
Dim s As String 
TestWorkbook = Array("test1", "test2", "test3") 
i = 1 'Start with 1 
Workbooks.Open Filename:="S:\Result_Workbook.xls" 'open only once 
For Each mytest In TestWorkbook 
    s = mytest & ".xls" 
    Workbooks.Open "c:\" & s 
    Workbooks(s).Activate 'Remember to Activate 
    Range("a4:a8").Copy 
    ' Now paste properly 
    Workbooks("Result_Workbook.xls").Worksheets("Sheet1").Range("l" & 5 + i).PasteSpecial Paste:=xlPasteValues 
    ActiveWorkbook.Close SaveChanges:=False 'close after pasting 
    i = i + 10 
Next 
End Sub 
+0

非常感谢。它工作正常。感谢提示和评论,因为它们非常有用。使用S作为字符串部分也是一件很好的事情。节省我的打字时间。 – RocketGoal 2010-08-26 10:49:51

+0

@Mike很高兴知道它的工作。始终记住,启动宏的最佳方法是记录动作并将其偷窥到自动生成的代码中。 – 2010-08-26 11:57:10