You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:24:02