首页 > 解决方案 > 在 vba 中使用 getElementsByTagName 返回运行时错误 91 对象变量或未设置块变量

问题描述

想象一下下面的 HTML:

            <div class="result-row">
                <div class="row">
                    <div class="col-xs-5 result-score-padding">
                        <div class="result-score" align="right">Portugal</div>
                    </div>
                    <div class="col-xs-2 result-score-padding" align="center">
                        <div class="result-score">2 - 2</div>
                    </div>
                    <div class="col-xs-5 result-score-padding">
                        <div class="result-score">Spain</div>
                    </div>
                </div>
            </div>

在下面的代码中,我在 VBA 中使用 getElementsByClassName 从元素中获取 innerText:

Dim IE As New InternetExplorer
Dim doc As HTMLDocument
Dim i As Integer
Dim game As String

IE.navigate "https://www.example.com"
While IE.Busy Or IE.ReadyState <> 4: DoEvents: Wend
Set doc = IE.document
For i=0 To 2
    game = Trim(doc.getElementsByClassName("result-score")(i).innerText)
Next i

但是,此代码不会返回所需的结果,因为它返回运行时错误 91 对象变量或未设置块变量

我想提取“葡萄牙 2 - 2 西班牙”

网址是http://www.stoiximan.gr/virtuals/

标签: vbaexcelweb-scrapingruntime-errorgetelementsbyclassname

解决方案


覆盖你的“游戏”变量。

然后你失去了以前的内容。


推荐阅读