【发布时间】:2021-08-05 19:20:38
【问题描述】:
我已经构建了一个加载项,旨在从 www 下载。加载项将出现在用户计算机的“下载”文件夹中。
在激活时,加载项活动的第一阶段是使用 SaveAs 将自身复制到用户的“/Microsoft/AddIns”文件夹中。然后“父”加载项自行关闭并退出 Excel。 (在重新启动 Excel 时,“子”加载项将被加载并处于活动状态。)
代码是
Sub CheckInstall()
'Several lines of code before this.
'They have been tested and seem to work well.
MyNewfileNm = TestBase & GCSAPPNAME
If IsInstalled(MyNewfileNm) Then
Application.DisplayAlerts = False
ThisWorkBook.SaveCopyAs MyNewfileNm
Application.DisplayAlerts = True
MsgBox "We're done, and Excel will close." & Chr(13) & _
"On reopening you will find 'ACBA Mapping' loaded and active in the ADD-INS tab."
Excel.Application.Quit
ActiveWorkbook.Close False
Else
ThisWorkBook.SaveCopyAs MyNewfileNm
If ActiveWorkbook Is Nothing Then
Workbooks.Add
Set oAddIn = Application.AddIns.Add(MyNewfileNm, False)
oAddIn.Installed = True
Else
Set oAddIn = Application.AddIns.Add(MyNewfileNm, False)
oAddIn.Installed = True
End If
MsgBox "We're done, and Excel will close." & Chr(13) & _
"On reopening you will find 'ACBA Mapping' loaded and active in the ADD-INS tab."
Excel.Application.Quit
ActiveWorkbook.Close False
End If
End Sub
这会按预期处理和复制自身,但在 Application.Quit 完成之前,我收到错误代码 91。单击错误消息时,它只是恢复指令代码。结果完全符合预期。
但是,我必须解决生成错误消息的问题或禁止显示错误消息。暂时我也做不到。
我将不胜感激。
【问题讨论】:
-
您为什么要在退出 Excel 后关闭工作簿?
-
如果您在打开未保存的工作簿的情况下退出 excel,它会询问您是否要保存它。在这种情况下,答案是“否”。打开工作簿只是为了方便复制的外接程序的安装过程。
-
也就是说……为什么不先关闭再退出?
-
是的,我也这么认为,但是在测试中,Excel.Application.Quit 未能完全退出。看来代码指令的顺序是必须的。
-
Raymond - 我想你可能已经注意到了潜在的问题。在 IF 语句的第一部分,我没有重新安装加载项。这已在例程的早期设置为 FALSE。我会在适当的时候测试它。