【发布时间】:2017-09-16 01:53:38
【问题描述】:
我有一个问题:尝试将工作表复制到另一个工作簿时出现错误(错误 1004)。 这是我的代码:
Sub CopyWorksheet()
Application.ScreenUpdating = False
Dim BonusRatesWB As Workbook
Dim appExcel As Application
Set appExcel = New Application
appExcel.Visible = False
Set BonusRatesWB = appExcel.Workbooks.Open("D:\Documents\Overdraft\OVERDUE customers\HARD COLLECTION\Hard Collectors Bonus Calc\BonusRates\ProblemLoansOfficerBonusRates15Sep2017.xlsx")
With ThisWorkbook
BonusRatesWB.Sheets(1).Copy After:=.Sheets(.Sheets.Count)
End With
BonusRatesWB.Close
appExcel.Quit
Application.ScreenUpdating = True
结束子
我认为我的对象变量有一些缺失/错误,但我无法弄清楚。帮助将不胜感激。 非常感谢。
【问题讨论】:
-
你没有在
Dim之后将ThisWB设置为任何内容 -
您是否有充分的理由打开 Excel.Application 的 新 实例?
-
@DavidZemens 我想避免在代码运行时屏幕闪烁。我理解 ScreenUpdating=False 它仍然会打开新窗口。
-
Application.ScreenUpdating控制屏幕“闪烁”。通常(可能有例外)打开工作簿将存在于 Excel 应用程序的 当前 实例中。一个新的“窗口”,但不是一个新的“应用程序”。我认为因为您在 Excel 的新实例中显式打开工作簿,所以您不能以这种方式复制它。您可以尝试在同一实例中打开吗? -
@DavidZemens 当我尝试在同一个实例中打开它时它起作用了。但我不明白为什么它不适用于新实例。