使用 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

从 Excel VBA 运行工作参数化 Access SQL 查询 (INSERT INTO) 时出现“需要对象”错误

VBA 在命名范围上尝试求和函数时出现运行时错误

尝试使用 .SaveAs VBA 函数时出现方法错误

执行 vba 查询 ms 访问时出现运行时错误 3075

访问 VBA - 导入 *.CSV 时出现运行时错误 31519。您无法导入此文件