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
相关产品推荐
相关产品推荐

