VBA运行时错误91(对象变量或With块变量未设置)如何修复?
错误原因及修复方案
1. 首要错误:路径拼接逻辑错误
你打开Word文档的代码存在严重路径错误:
Set wDoc = wd.Documents.Open(ThisWorkbook.Path & "C:\Users\User\Desktop\Prowess Documents\Prowess Electrical Solutions Ltd\Automation Test Documents\Quote Document Template_Bookmarks.docx")
ThisWorkbook.Path 是你当前Excel文件所在的文件夹路径,和后面的绝对路径C:\xxx拼接后会生成完全无效的非法路径,导致wDoc对象根本没有被成功赋值,后续操作自然会触发91报错。
修复方式:二选一即可
- 直接用完整绝对路径,去掉
ThisWorkbook.Path &部分- 如果模板放在Excel文件同目录下,写
ThisWorkbook.Path & "\Quote Document Template_Bookmarks.docx"
2. 第二错误:拼写&书签名称不匹配
你提到报错行是wd.Selectioin.GoTo what:=wdGoToBookmark, Name:="Quote Number"
- 首先是拼写错误:
Selectioin多了一个i,正确拼写是Selection - 其次书签名称不一致:你前面代码里写的书签名是
QuoteNumber,报错行里是带空格的Quote Number,需要和Word模板里实际的书签名称完全一致(大小写、空格都要匹配)
3. 优化建议:避免用Selection对象
Selection对象依赖Word窗口焦点,稳定性差,直接操作Bookmarks对象更稳妥,替换原有跳转书签+输入文本的代码即可:
' 替换原来的wd.Selection.GoTo...+TypeText两行代码 If wDoc.Bookmarks.Exists("QuoteNumber") Then wDoc.Bookmarks("QuoteNumber").Range.Text = wsheet.Range("A" & iRow).Value Else MsgBox "书签QuoteNumber不存在,请检查Word模板" End If
额外调试提示
可以在打开文档的代码后加一行判断,提前捕获文档打开失败的问题:
Set wDoc = wd.Documents.Open("你的正确模板路径") If wDoc Is Nothing Then MsgBox "Word模板打开失败,请检查路径是否正确" Exit Sub End If
内容的提问来源于stack exchange,提问作者Holly
相关产品推荐
相关产品推荐

