簡體   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