MacOS 12.6下VBA批量转.doc至.docx遇运行时错误-2146959355求助
macOS下Word VBA批量转doc为docx时Automation错误的解决办法
针对你遇到的Runtime error -2146959355 (80080005)自动化错误,结合macOS 12.6的环境特性,以下是具体的排查和解决步骤:
1. 检查Word的文件夹访问权限
macOS的隐私权限管控严格,这是最常见的诱因:
- 打开系统偏好设置 > 安全性与隐私 > 隐私 > 文件与文件夹
- 在应用列表中找到Microsoft Word,勾选目标文件所在的文件夹(比如你的
/Users/me/path/to/files/目录) - 关闭并重新打开Word,再运行宏
2. 排查Word进程与可见性问题
- 先结束所有Word进程:打开活动监视器,搜索“Microsoft Word”,终止所有相关进程,再重新打开Word运行宏
- 修改代码中
Visible:=False为Visible:=True,让Word窗口显示出来——部分旧doc文件可能存在损坏、加密或需要格式修复的弹窗,后台运行时会触发自动化错误,可见模式下能直接看到问题
3. 调整路径格式与SaveAs参数
- 尝试将路径替换为macOS原生的冒号分隔格式,比如把
strFolder = "/Users/me/path/to/files/"改成strFolder = "Macintosh HD:Users:me:path:to:files:" - 把
FileFormat:=16替换为命名常量FileFormat:=wdFormatXMLDocument,避免数值在不同版本下的兼容性问题(确保宏所在文档已默认引用Word对象库)
4. 添加错误捕获,避免批量任务中断
修改代码增加错误处理,遇到损坏文件时跳过并记录错误,不影响后续文件处理:
Sub TranslateDocIntoDocx() Dim objWordApplication As New Word.Application Dim objWordDocument As Word.Document Dim strFile As String Dim strFolder As String strFolder = "/Users/me/path/to/files/" objWordApplication.Visible = True ' 开启可见模式排查问题 strFile = Dir(strFolder & "*.doc", vbNormal) While strFile <> "" On Error Resume Next ' 捕获错误,避免单文件失败终止任务 With objWordApplication Set objWordDocument = .Documents.Open(FileName:=strFolder & strFile, AddToRecentFiles:=False, ReadOnly:=True, Visible:=False) If Err.Number = 0 Then With objWordDocument ' 使用命名常量指定docx格式 .SaveAs FileName:=strFolder & Replace(strFile, ".doc", ".docx"), FileFormat:=wdFormatXMLDocument .Close End With Else ' 在立即窗口打印错误信息,方便排查问题文件 Debug.Print "处理失败: " & strFile & ",错误码: " & Err.Number Err.Clear End If End With strFile = Dir() Wend objWordApplication.Quit ' 退出Word实例 Set objWordDocument = Nothing Set objWordApplication = Nothing End Sub
5. 终极排查:重启系统与重置Word偏好
如果以上方法都无效:
- 重启Mac,清除系统临时进程缓存
- 重置Word偏好:关闭Word后,删除
~/Library/Preferences/com.microsoft.Word.plist文件,再重新打开Word
内容的提问来源于stack exchange,提问作者artbertert
相关产品推荐
相关产品推荐

