gpt4 book ai didi

excel - 代码在复制/粘贴为宏时运行,但在另存为加载项时不运行

转载 作者:行者123 更新时间:2023-12-04 22:27:31 25 4
gpt4 key购买 nike

正如标题所示,此代码在 Sheet.Copy After:=ThisWorkbook.Sheets(1) 行失败。运行时错误 1004

为什么这会在作为模块添加时运行,但在保存为加载项时不会运行?

这是代码:

Dim FolderPath As String
Dim Filename As String
Dim Sheet As Worksheet

Application.ScreenUpdating = False
FolderPath = GetFolder() & "\"
Filename = Dir(FolderPath & "*.xls*")
Do While Filename <> ""
Workbooks.Open Filename:=FolderPath & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy After:=ThisWorkbook.Sheets(1)
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop

Application.ScreenUpdating = True
End Sub

最佳答案

正如@BruceWayne 所建议的那样,决定正确的工作簿是一个问题。作为 AddIn , ThisWorkbook将是 AddIn工作簿,而 ActiveWorkbook (在打开其他人之前),将是您正在运行的工作簿 AddIn进入。

简单替换ThisworkbookActiveWorkbook在您的场景中不起作用,因为您只需将工作表从新打开的工作簿复制到相同的位置。

声明变量以保存此信息是一个好主意,然后您可以根据需要打开任意数量的工作簿,并且可以从您想要的位置打开。

见下文:

Application.ScreenUpdating = False

Dim wbDst As Workbook: Set wbDst = ActiveWorkbook 'Can also use Worbooks("book name here")
Dim wbSrc As Workbook
Dim Sht As Worksheet

Dim FolderPath As String: FolderPath = GetFolder() & "\"
Dim FileName As String: FileName = Dir(FolderPath & "*.xls*")

Do While FileName <> ""
Set wbSrc = Workbooks.Open(FileName:=FolderPath & FileName, ReadOnly:=True)

For Each Sht In wbSrc.Worksheets
Sht.Copy After:=wbDst.Sheets(1)
Next Sht

wbSrc.Close
FileName = Dir()
Loop

Application.ScreenUpdating = True

关于excel - 代码在复制/粘贴为宏时运行,但在另存为加载项时不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56402477/

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