繁体   English   中英

如何在Excel VBA脚本中修复运行时错误91

How to fix Runtime Error 91 in Excel VBA script

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我创建了一个小脚本,该脚本从网站表中获取一些数据并将其填充到Excel中的单元格中。 我需要这样做,以便对自己的数据进行搜索并对其进行过滤。 但是我遇到了一个小问题,每次我运行脚本时,它都会执行大约9到11页(大约250个单元格条目)的操作,然后停止并弹出错误消息,提示“运行时错误91”对象变量或未设置带块变量。 它永远不会一直运行到最后,而我只得到了我应该获得的一小部分数据。

我不是编程专家,更不是VBA专家,所以如果我做错了事,请告诉我。 我已经在这个问题上停留了几天。 我不知道该怎么办才能解决此问题。 我一直在寻找Google,YouTube甚至微软自己的网站上的修复程序,但无法弄清楚为什么该错误会在我自己的脚本中弹出。

我知道什么时候会遇到这个问题; 1)您尝试使用尚未引用有效对象的对象变量,或者2)您尝试使用已设置为Nothing的对象变量。 但是我无法弄清楚我在代码的哪个部分犯了这个错误。 帮助非常感谢。


更新:当我从第8页开始页码到第15页时,从站点中提取数据没有问题,因此我认为这与特定页码没有任何关系(我可能错了对这个)。 但是,当我将页码设置为17而不是15时,错误消息几乎立即弹出。 那么,是否可能是页面之间的范围导致这种情况?

更新2:当错误消息弹出时,这也是不一致的,当我以相同的页码(8到17)再次运行脚本时,它贯穿整个过程而不会打h。 (很奇怪)然后我将页码从(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
问题暂未有回复.您可以查看右边的相关问题.
1 如何在Excel中修复运行时错误“ 91”

我创建了一个用户表单,可以为我将数据输入工作表中。 我正在尝试对其进行编码,以将信息放入选定的工作表中。 我有一个组合框,可以在其中选择要放入其信息的工作表。我试图将变量ws设置为组合框值,并且出现运行时错误“ 91”,并且显示“对象变量或不带块的组”。 我遇到问题的代码如下。 ...

3 Excel VBA运行时错误91

我是excel VBA的新手,我正在尝试编写代码以吸收两支NBA球队(一支主队和一支客队)的输入,进行测试以确保团队的名称存在于我的表格中,并输出输入的名称团队(如果找到)。 下面是我的代码: 我在此代码中遇到运行时错误91,我试图通过为h和a设置值来解决。 如前所述,我是该程序设计 ...

2018-03-11 05:01:28 0 94   excel/ vba
5 运行时错误91 excel vba,未设置对象

以下代码有什么问题?,每次运行时,我都会收到“运行时错误91,对象变量或未设置黑色变量” 知道我的代码有什么问题吗? 我基本上是将信息从Excel转换成单词。 ...

6 VBA Excel连接刷新-运行时91错误

我正在尝试刷新供枢轴使用的一个(四个)连接。 其他三个连接是相对静态的,不需要定期刷新。 我使用记录器创建了以下内容,但是当它运行时,在第一行选择行中出现“运行时错误91”。 我搜索了几个论坛,但找不到与之完全匹配的任何内容。 有什么建议么? ...

7 运行时错误91 VBA

我有这个想法-在一个文件中,我设置了要搜索的名称和文件,并希望VBA打开该文件,遍历所有工作表,找到我搜索的值,并在同一行返回一些值。 首先,我只找到一种仅在一列中搜索的方法,但是在我的文件中,该值可能在5-6列中。 有谁知道如何在孔工作表中搜索? 另外,我有一个简单的解决方案(我搜索的数 ...

2015-08-07 07:08:48 1 94   excel/ vba
8 VBA运行时错误:91

我正在尝试使用Outlook将电子邮件发送到Excel工作表中的column:A每个电子邮件地址,并将Word文档插入正文中。 我已经编写了以下代码,但它给了我运行时错误91。我正在使用Office 2013。 ...

9 如何修复SQL查询上的运行时错误91?

此代码从用户请求两个输入变量,然后在查询中使用这些变量从公司内部软件返回数据。 我从公司其他人毫无疑问使用的宏中改编了这段代码。 我的宏: 编译没有问题 遇到运行时错误“ 91”:对象变量或未设置块变量 发生在With.Selection.ListOb ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM