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

Excel宏运行报错Run-time error '91':对象变量或With块变量未设置

解决Excel宏Run-time error '91'问题

嘿,我来帮你搞定这个报错!Run-time error '91'本质上是说你代码里的link对象压根没被正确初始化——简单说就是程序在网页里没找到你要的那个链接元素,或者赋值的时候压根没拿到这个对象,所以当你试图访问它的innerHTML属性时直接炸锅了。

核心问题拆解

错误出在str_text = Replace(link.innerHTML, "<EM>", "")这行,因为link是Nothing(空对象),自然没法调用它的属性。大概率是你获取link对象的逻辑出了问题:比如网页结构更新了,原来的元素选择器找不到目标;或者XMLHTTP请求没成功拿到网页内容,导致后续的html对象里没有你要的元素。

直接修复方案

在使用link对象的任何属性之前,先加个判断,确认它不是空对象。修改代码如下:

' 先检查link对象是否存在,再访问它的属性
If Not link Is Nothing Then
    str_text = Replace(link.innerHTML, "<EM>", "")
    ' 这里可以继续写你处理str_text的后续逻辑
Else
    ' 处理找不到元素的情况,比如给默认值或者弹窗提示
    str_text = "未找到目标链接内容"
    ' 也可以加个提示帮助排查
    ' MsgBox "未能找到目标链接元素,请检查网页结构或选择器"
End If

进一步排查优化方向

  • 检查元素选择器:回顾你用来获取link对象的代码(比如Set link = objH3.getElementsByTagName("a")(0)这类语句),确认选择器是否匹配当前网页的结构。网页经常会更新,原来的选择器可能失效了。
  • 确认网页加载成功:确保XMLHTTP请求已经成功获取到网页内容,并且html对象正确加载了响应文本。可以加个简单的检查:
    Set html = CreateObject("htmlfile")
    html.body.innerHTML = XMLHTTP.responseText
    
    ' 检查网页内容是否加载成功
    If Trim(html.body.innerHTML) = "" Then
        MsgBox "网页内容加载失败,请检查请求URL或网络连接"
        Exit Sub
    End If
    
  • 补全未完成的代码:你的代码片段里result_cookie变量只声明了没使用,虽然这不是当前错误的原因,但最好补全相关逻辑,避免后续出现其他问题。

内容的提问来源于stack exchange,提问作者Arun Santha Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:25:15