excel - 如何修复 Excel VBA 脚本中的运行时错误 91
问题描述
我创建了一个小脚本,它从网站表格中获取一些数据并将其填充到 Excel 中的单元格中。我需要这个才能让自己更轻松地搜索这些数据并对其进行过滤。但是我遇到了一个小问题,每次我运行我的脚本时,它都会执行大约 9 到 11 页(大约 250 个单元格条目)应该做的事情,然后停止并弹出一条错误消息,上面写着“运行时错误 91”对象变量或未设置块变量。它从来没有一直运行到最后,我只得到了我应该得到的数据的一小部分。
我不是编程专家,更不是 VBA 专家,所以如果我做错了什么,请告诉我。我已经被这个问题困扰了几天。我不知道该怎么做才能解决这个问题。我已经在 Google、YouTube 甚至微软自己的网站上寻找修复程序,但无法弄清楚为什么这个错误会在我自己的脚本中弹出。
我知道这个问题是什么时候遇到的;1) 您尝试使用尚未引用有效对象的对象变量,或者 2) 您尝试使用已设置为 Nothing 的对象变量。但我不知道我在代码的哪一部分犯了这个错误。非常感谢帮助。
更新:当我从 8 开始页码并上升到 15 时,从网站中提取数据没有问题,所以我认为它与特定的页码没有任何关系(我可能是错的对这个)。但是当我将页码设置为 17 而不是 15 时,错误消息几乎立即弹出。那么,可能是页面之间的范围导致了这种情况吗?
更新 2:当错误消息弹出时,它也有点不一致,当我使用相同的页码(8 到 17)再次运行脚本时,它贯穿整个事情而没有打嗝。(奇怪)然后我将页码从(8 到 18)更改为 2 页并停止。
更新 3:这是否可能因为我受到速率限制而发生?
Sub GrabInfo()
Dim objIE As InternetExplorer
Dim r As Integer
Dim p As Integer
Dim c As Integer
r = 0
p = 0
c = 0
Dim sDD1 As String
Dim sDD2 As String
Dim sDD3 As String
Set objIE = New InternetExplorer
'objIE.Visible = True
Do While p < 53
p = p + 1
'Setting row to zero after the new page loads but before the data gets pulled
r = 0
objIE.navigate "URLGOESHERE.com/123456789?pageNum=" & p
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop
Do While r < 25
'Increment the row (gets reset after each page)
r = r + 1
'Increment the cell (never gets reset)
c = c + 1
'Pulling data from site row by row and setting each child to temp sDD strings
sDD1 = objIE.document.getElementsByClassName("table-content")(r - 1).Children(0).innerText
sDD2 = objIE.document.getElementsByClassName("table-content")(r - 1).Children(2).innerText
sDD3 = objIE.document.getElementsByClassName("table-content")(r - 1).Children(3).innerText
Debug.Print sDD1 & " | " & sDD2 & " | " & sDD3 & " - " & _
"Cell # = " & c & " ROW # = " & r & " PAGE # = " & p
'Filling in the temp sDD strings into excel cells
Range("A" & (c + 1)).Value = sDD1
Range("B" & (c + 1)).Value = sDD2
Range("C" & (c + 1)).Value = sDD3
Loop
Loop
End Sub
解决方案
推荐阅读
- jenkins - Jenkins 2.121.3 LTS 版本中的 JDK 警告
- r - 在 R 中将日期转换为文本
- html - 如何从办公文档迁移到基于现代 Web 技术的文档 - 欢迎咨询
- javascript - 引导表:服务器端分页参数未到达服务器
- javascript - 是否可以使用 JS 检查 CSV 文件的语法错误?
- ios - 传递到第二个 UIViewController 时无法保存或查看视频
- haproxy - Haproxy 检查是否只有键存在
- android - 如何将 RTF 转换为 android spannable?
- sql - MS SQL:如何从查找表中为每个外键对选择最近的记录
- javascript - 用 js 添加重复的 html 并评估 thymeleaf 表达式