繁体   English   中英

VBA上的语法错误问题

[英]Syntax Error Issue on VBA

我试图从网站使用VBA提取一些值

以下代码包含我要查找的数据数组。 这完美地工作,并给我一系列我正在寻找的数据。

document.getElementsByClassName("list-flights")(0).querySelectorAll("[class$='price']")

结果如上

<NodeList length="23">...</NodeList>

但是当我尝试通过使用以下代码在VBA中运行循环来提取值时

lnth = document.getElementsByClassName("list-flights")(0).querySelectorAll("[class$='price']").Length - 1

For x = 0 To lnth

    firstResult = document.getElementsByClassName("list-flights")(0).querySelectorAll("[class$='price']")(x).innerText

Next x

代码会在firstResult上给出错误,因为它不会获得任何值。 我检查了Internet Explorer没有值,如果我使用“(”括号,但是如果我在Internet Explorer上使用“[”它可以工作,但VBA不接受“[”括号。

document.getElementsByClassName("list-flights")(0).querySelectorAll("[class$='price']")[0] 

上面的代码适用于Internet Explorer控制台,但无法在VBA中使用。

我相信如果你可以建议解决方法是什么,我会遗漏一些会有很大帮助。

在此输入图像描述

要获取innerText,您可以多次使用getElementsByClassName 2,其中一个内部for each .. next循环,因为您的值在list-flights -> price -> cash js_linkInsideCell

Set priceData = IE.document.getElementsByClassName("list-flights")(0).getElementsByClassName("price")

For Each Item In priceData
    Debug.Print Item.getElementsByClassName("cash js_linkInsideCell")(0).innerHTML
Next Item

使用.querySelectorAll("[class$='price']")也可以,但解析后会崩溃IE对象。 试试看它是否崩溃:

Set priceData = IE.document.getElementsByClassName("list-flights")(0).querySelectorAll("[class$='price']")

For Each Item In priceData
    Debug.Print Item.getElementsByClassName("cash js_linkInsideCell")(0).innerHTML
Next Item

一些快速说明:

1 - 您可以使用此代码等待IE对象加载url:

Do While IE.Busy
    DoEvents
Loop

2 - 有时,即使IE对象准备就绪,查询结果也不会快速返回。 这意味着您要查找的元素尚未准备好并且不存在,因此您收到错误消息:

运行时错误'91':对象变量或未设置块变量

为避免此消息,我的解决方法如下:

Do
On Error Resume Next
Set priceData = IE.document.getElementsByClassName("list-flights")(0).getElementsByClassName("price")
Loop Until Err.Number <> 91

我希望这有帮助。

暂无
暂无

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

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