-1

我需要将两个单独的数据列从一个工作簿复制到另一个工作簿。

这是我的代码:

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").Activate' 的中断处留下错误 9

4

2 回答 2

1

我看到这段代码有很多问题。如前所述,您没有定义 tDay。我认为这是在其他地方定义的,否则您将无法达到您的预期。

ActiveWorkbook应尽可能避免使用,因为它可能并不总是您期望的工作簿。Workbook创建一个变量并将其分配给选定的工作簿要好得多;然后改用它。我怀疑这是你的问题的原因—— ActiveWorkbook.Close 没有关闭你期望的那个。

接下来,您将打开文件,从中复制,关闭它,然后重复。为什么不让它打开?

接下来,您不必总是调用 .Select 来对某个范围采取行动。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
于 2013-09-12T19:30:05.663 回答
0

猜测您的 tDay 值未找到,例如超出范围或没有此类表号。你如何定义这个价值?

于 2013-09-12T19:20:49.847 回答