使用 VBA 密码保护进行保存时出现错误消息“运行时错误‘1004’:对象‘_Workbook’的方法‘SaveAs’失败”
Posted
技术标签:
【中文标题】使用 VBA 密码保护进行保存时出现错误消息“运行时错误‘1004’:对象‘_Workbook’的方法‘SaveAs’失败”【英文标题】:Error Message "Run-time error '1004': Method 'SaveAs' of object'_Workbook' failed" when saving with VBA password protection on 【发布时间】:2019-10-01 08:29:44 【问题描述】:我正在尝试将工作簿中的单个工作表另存为 .txt 文件 - 我必须这样做的代码是:
ActiveWorkbook.SaveAs Filename:= _
directory & Application.UserName & "_" & file_name _
, FileFormat:=xlUnicodeText, CreateBackup:=False
(目录和文件名在宏前面定义)
包含此代码的宏受密码保护。在未输入密码的情况下运行宏时,我收到错误消息“运行时错误'1004':对象'_Workbook'的方法'SaveAs'失败”。当我打开 Visual Basic 并输入密码时,宏运行良好,没有错误消息。我可以使用不同的语法来保存 .txt 文件,或者有谁知道可能导致此错误的原因?
我在另一个网站上找到了 2006 年的旧帮助帖子,答案为 0:
https://www.excelforum.com/excel-general/567235-error-when-save-as-csv-with-vba-password-protection-on.html
任何帮助/建议将不胜感激!
【问题讨论】:
“SaveAS” macro in excel with password protection 的可能(无用)重复 你在文件名中明确定义了文件扩展名吗? 我会说这是 Excel 未能及早意识到以纯文本格式保存会丢弃 VBA 项目,所以你没有密码也没关系。 @Plutian- 是的,我之前将文件名作为字符串,文件扩展名为“.txt”。 @GSerg - 感谢您的快速回复!我没有看到对先前帖子的明确解决方案,也没有解释为什么 vba 项目密码会停止宏保存文件(如果目标目录不存在,那么 vba 项目密码肯定不会有任何影响?) 【参考方案1】:不确定是否允许回答我自己的问题或者是否正确 - 但我设法让宏工作,希望这将有助于将来的其他人:
代替:
ActiveWorkbook.SaveAs Filename:= _
directory & Application.UserName & "_" & file_name _
, FileFormat:=xlUnicodeText, CreateBackup:=False
用途:
ThisWorkbook.SaveAs Filename:=direct & file_name, FileFormat:=xlText
不知道为什么这会起作用,而之前的代码不起作用,但即使 vba 受密码保护,它也会保存一个 .txt 文件。
【讨论】:
以上是关于使用 VBA 密码保护进行保存时出现错误消息“运行时错误‘1004’:对象‘_Workbook’的方法‘SaveAs’失败”的主要内容,如果未能解决你的问题,请参考以下文章
使用 Range 类在 VBA 中创建宏时出现运行时错误 1004