我需要将两个单独的数据列从一个工作簿复制到另一个工作簿。
这是我的代码:
Workbooks.Open Filename:=file & "\GSP - " & months(numMonth) & " 1-" & numdays (numMonth) & " " & tYear & " - Prem.xls", _
Origin:=xlWindows, UpdateLinks:=False, ReadOnly:=True
ActiveWorkbook.Sheets(tDay).Activate
range("AA6:AA40").Select
Selection.Copy
Windows(fileM & ".xls").Activate
Sheets("Summary").Activate
range("C3:C37").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
ActiveWorkbook.Close
ActiveWindow.Close
Workbooks.Open Filename:=file & "\GSP - " & months(numMonth) & " 1-" & numdays(numMonth) & " " & tYear & " - Prem.xls", _
Origin:=xlWindows, UpdateLinks:=False, ReadOnly:=True
ActiveWorkbook.Sheets(tDay).Activate
range("AA84:AA118").Select
Selection.Copy
Windows(fileM & ".xls").Activate
Sheets("Summary").Activate
range("H3:H37").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
ActiveWorkbook.Close
ActiveWindow.Close
当宏完成运行时,第二个副本没有完成,我在第二个Windows(fileM&“。xls”)的休息处留下错误9。激活'
答案 0 :(得分:1)
我发现这段代码存在很多问题。如前所述,你没有定义tDay。我认为这是在其他地方定义的,否则你就不会得到这么多。
应尽可能避免使用ActiveWorkbook
,因为它可能并不总是您期望的工作簿。创建Workbook
变量并将其分配给选定的工作簿要好得多;然后用它代替。我怀疑这是你的问题的原因 - ActiveWorkbook.Close没有关闭你期望的那个。
接下来,您将打开文件,从中复制,关闭文件并重复。为什么不把它打开?
接下来,您并不总是需要调用。选择以对范围执行操作。您可以直接从Range
对象调用.Copy和.PasteSpecial。
我对你的意图做了一些假设,但是下面的代码包含了上面的建议。
Sub foo()
Dim wkbGSP As Workbook
Dim wkbFileM As Workbook
tday = "sheet1"
Set wkbFileM = Workbooks(fileM & ".xls")
Workbooks.Open Filename:=file & "\GSP - " & months(numMonth) & " 1-" & numdays (numMonth) & " " & tYear & " - Prem.xls", _
Origin:=xlWindows, UpdateLinks:=False, ReadOnly:=True
Set wkbGSP = ActiveWorkbook
wkbGSP.Sheets(tday).Range("AA6:AA40").Copy
wkbFileM.Sheets("Summary").Activate
Range("C3:C37").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
wkbGSP.Sheets(tday).Activate
Range("AA84:AA118").Copy
wkbFileM.Sheets("Summary").Activate
Range("H3:H37").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
wkbGSP.Close
End Sub
答案 1 :(得分:0)
未找到您的tDay值,例如超出范围或没有此类工作表编号。你如何定义这个值?