[英]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.