何处可获取带编号及说明的Microsoft Word VBA运行时错误文档?
Word VBA对象库运行时错误列表获取问题
我无法在谷歌及微软官方文档中找到带有错误编号及说明的Microsoft Word VBA运行时错误相关文档。曾使用过Microsoft Access VBA,其错误列表可在多个网站查询到,但Word的相关错误文档始终无法找到。
我尝试用以下代码生成错误列表,但该代码仅能生成VBA的错误信息,而非Microsoft Word对象库的错误:
Public Sub GenerateWordErrorList() Dim errnum As Long Dim errtxt As String For errnum = 1 To 65535 errtxt = Error(errnum) If errtxt <> "Application-defined or object-defined error" Then Debug.Print CStr(errnum), Error(errnum) End If DoEvents 'Prevent application window from going to sleep while looping. Next End Sub
问题原因
Error()函数仅能返回VBA内置的运行时错误信息,而Word对象库抛出的是应用程序定义/对象定义错误,这类错误编号不在1-65535的VBA内置错误范围内,无法通过遍历编号的方式直接获取对应描述。
可行的解决方法
主动触发Word对象操作并捕获错误
编写代码故意执行会触发Word对象错误的操作,通过On Error Resume Next捕获Err.Number和Err.Description,示例代码如下:Public Sub CaptureWordObjectErrors() Dim doc As Document Dim rng As Range On Error Resume Next ' 触发"文档未找到"错误 Set doc = Documents.Open("不存在的文档路径.docx") If Err.Number <> 0 Then Debug.Print "错误编号: " & Err.Number, "描述: " & Err.Description Err.Clear End If ' 触发"范围无效"错误 Set rng = ActiveDocument.Range(999999, 1000000) ' 超出文档长度的范围 If Err.Number <> 0 Then Debug.Print "错误编号: " & Err.Number, "描述: " & Err.Description Err.Clear End If ' 触发"权限不足"错误 ActiveDocument.SaveAs "C:\系统目录\无法保存的文档.docx" If Err.Number <> 0 Then Debug.Print "错误编号: " & Err.Number, "描述: " & Err.Description Err.Clear End If ' 可继续添加更多可能触发Word对象错误的操作 On Error GoTo 0 End Sub利用Word对象库的常量
部分Word错误会以常量形式定义在对象库中,可通过对象浏览器(按F2打开)查看:- 在对象浏览器中选择
Word库 - 搜索包含
wdError前缀的常量,这些常量对应Word的特定错误编号,例如wdErrorDocumentLocked对应错误编号4605
- 在对象浏览器中选择
捕获实际运行中的错误
在日常开发的Word VBA代码中添加错误捕获逻辑,将遇到的错误编号和描述记录下来,逐步积累错误列表:Sub SampleOperation() On Error GoTo ErrorHandler ' 你的Word操作代码 ActiveDocument.Tables(999).Select ' 触发表格不存在的错误 ErrorHandler: If Err.Number <> 0 Then Debug.Print "捕获错误: " & Err.Number & " - " & Err.Description ' 可将错误信息写入文本文件保存 Open "WordErrorLog.txt" For Append As #1 Print #1, Now() & " | 编号: " & Err.Number & " | 描述: " & Err.Description Close #1 Err.Clear End If End Sub
内容的提问来源于stack exchange,提问作者spinjector
相关产品推荐
相关产品推荐

