excel - 使用 ActiveWorkbook.SaveCopyAs 文件名时出现运行时错误
问题描述
ActiveWorkbook.SaveCopyAs Filename
: 给
运行时错误 1004
但点击 Debug>Run> Continue 代码按预期运行。
我有一个启用宏的 Excel2016 电子表格。当更新并保存到 PC 时,我还希望将副本保存到我的 NAS。我已经为另外两个电子表格编写了代码(见下文)并使用了相同的代码(文件名除外)。这另外两个电子表格按预期保存(即保存到没有运行时错误的 NAS 和 PC))代码如下:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Saves the current file to a backup folder and the default folder
'Note that any backup is overwritten
Application.DisplayAlerts = False
ActiveWorkbook.SaveCopyAs Filename:="\\ReadyNasDuo\Dell\Excelbak\finance18_19.xlsm"
ActiveWorkbook.Save
Application.DisplayAlerts = True
End Sub
我希望问题文件像其他两个一样。任何人都知道为什么它没有。唯一的区别是问题文件更大,受密码保护,链接到另一个电子表格并且有更多的“编码”(即更多的宏和 VBA)
解决方案
您还必须停用这些事件,Application.EnableEvents = False
否则您的Save
/SaveCopyAs
将触发另一个Workbook_BeforeSave
事件。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Saves the current file to a backup folder and the default folder
'Note that any backup is overwritten
Application.DisplayAlerts = False
Application.EnableEvents = False
ThisWorkbook.SaveCopyAs Filename:="\\ReadyNasDuo\Dell\Excelbak\finance18_19.xlsm"
'ActiveWorkbook.Save 'needed?
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
另外我认为你不需要,因为只要你不设置ActiveWorkbook.Save
它无论如何都会保存。未调用该事件,因此完成后仍会发生原始保存操作。 End Sub
Cancel = True
BeforeSave
InsteadOfSave
BeforeSave
注意ThisWorkbook
和ActiveWorkbook
不一样。我假设您打算使用ThisWorkbook
运行此代码的工作簿,而在代码运行时ActiveWorkbook
具有焦点(位于顶部)的工作簿。
推荐阅读
- html - Visual Studio 未在非项目文件中导入简单图像
- javascript - 为什么我的外部 CSS 没有正确应用?
- r - tidyverse:在汇总输出中附加总计行
- highcharts - highcharts - 从 HTML 中提取数据,但将字符串转换为数字
- javascript - 为particles.js 加载配置
- python - Python中的序列化
- python - 有人能告诉我python中的回车键是什么吗?
- reactjs - 使用 axios ReactJS 的 POST 请求
- laravel - 000webhost 不显示我的 css、js、图像文件
- api - 非规范化上下文和 api 平台的问题