gpt4 book ai didi

尝试将工作表复制到另一个工作簿时 VBA 返回错误 1004

转载 作者:行者123 更新时间:2023-12-04 21:55:18 28 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Copy entire worksheet from one instance of Excel to another

(1 个回答)


4年前关闭。




我有一个问题:尝试将工作表复制到另一个工作簿时出现错误(错误 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 更改为此

Dim ThisWB As Workbook

然后添加:
Set ThisWB = ActiveWorkbook

您的 ThisWorkbook对象已声明但未赋值,要为对象赋值,需要使用 Set [object] = [value expression] .

这适用于且仅当 ThisWorkbookActiveWorkbook在运行时。任何其他方案都将失败,因为您无法将不同的工作簿对象分配给 ThisWorkbook。内置对象。

只需使用内置对象即可。您收到 1004 错误,因为您的 Sheets.Count符合新打开的工作簿,而不是 ThisWorkbook ,如果 BonusRatesWB.Sheets.Count > ThisWorkbook.Sheets.Count 将给出错误.为避免这种情况,请始终将工作表、范围等限定为它们各自的父对象。下面使用 With ThisWorkbook堵塞:
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
End Sub

关于尝试将工作表复制到另一个工作簿时 VBA 返回错误 1004,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46244495/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com