尝试保存时 VBA 宏抛出错误(但仅在一台计算机上)

Posted

技术标签:

【中文标题】尝试保存时 VBA 宏抛出错误(但仅在一台计算机上)【英文标题】:VBA macro throws error when attempting to save (but only on one computer) 【发布时间】:2018-06-13 15:03:31 【问题描述】:

我们为 MS Word 编写了 VBA 宏。该宏似乎在我和我同事的计算机上正常工作。它也可以在我们其他同事的计算机上运行,​​但在我们老板的计算机上运行时(都使用 Windows 7 作为操作系统)就不行了。

尝试保存时发生特定错误:

.SaveAs fileName:="C:\Users\" & userName & "\Documents\Project\" & companyName & "\" & fileName & ".docx"

由于某种奇怪的原因,它不能只保存在一个系统上。我检查了信任中心设置,但它们似乎没有什么不同。有什么想法吗?

注意:userName 只是一个保存用户用户名的字符串

【问题讨论】:

抛出了什么具体的错误?请注意,您显示的是打开,而不是保存语句。 对不起,我错误地粘贴了错误的行(真诚的道歉!)。将编辑正确。至于错误 - 我明天会粘贴,因为我的老板走了,错误无法在我的电脑上重现。我们有错误处理,所以它只显示我们准备的消息(对于文件名错误的情况,但在我们的测试中应该没问题) 受影响的用户名在任何变量名称中是否包含空格或特殊字符?您可以尝试将文件用双引号括起来。 它是一个字母 + 数字,所以从技术上讲它不是。除了用户名中的数字不同之外,我们所有的登录名都是相同的,所以我怀疑是这样的。 检查安全问题。登录用户是否有权限执行保存操作?文件夹存在吗? 【参考方案1】:

好的,问题解决了。问题在于 MS Office 设置,特别是在保存选项卡中,其中默认保存设置设置为打开文档格式而不是 Word 格式 (.docx)

令人惊讶的是,将行编辑为:

.SaveAs fileName:="C:\Users\" & userName & "\Documents\Project\" & companyName & "\" & fileName & ".doc"

帮助并使其工作。但是,我们没有像这样编辑我们的宏,而是简单地将设置切换为以 word 格式保存默认值,然后它就可以正常工作了。 我发现 VBA 宏依赖于此设置令人惊讶且非常“愚蠢”,但如果有人遇到同样的问题,更改设置或 .doc 的扩展名应该可以解决它

【讨论】:

如果您还指定FileFormat:=wdFormatDocument 参数,而不仅仅是FileName,那么无论机器上的设置如何,您的代码都可能正常工作。这将覆盖机器上的默认设置。

以上是关于尝试保存时 VBA 宏抛出错误(但仅在一台计算机上)的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA 宏无法在同事的计算机上保存工作簿,但在我的计算机上很好

mysqldump 抛出“拒绝访问”错误,但仅在通过 logrotate 运行时?

如何修复仅在一台计算机上运行的 Exe 文件

VBS 在一台服务器上运行 .xlsm 工作簿中的 VBA 宏,但在另一台服务器上运行良好

我的 Blazor 服务器应用程序在一台本地计算机上的 Azure B2c 登录时遇到空引用错误,但在另一台本地计算机上没有,有啥想法吗?

尝试在另一台计算机上使用 glm 模型进行预测时出错