VBA程式碼如下,原本執行正常,忽然有一天出現「執行階段錯誤'91':沒有設定物件變數或With區塊變數」錯誤,點擊偵錯,黃底標示在「dd = IE.Document.getElementsByClassName("priceText__1853e8a5")(0).innerText」這行,請問如何修正?謝謝!
Sub GetExchangeRate()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
Application.Wait (Now + #12:00:01 AM#)
IE.Visible = False
IE.Navigate "https://www.bloomberg.com/quote/USDTWD:CUR"
Application.StatusBar = "Loading, Please wait..."
Do While IE.Busy
Application.Wait DateAdd("s", 1, Now)
Loop
Application.StatusBar = "Searching for value. Please wait..."
Dim dd As Double
Dim dt As String
Dim obj As New DataObject
dd = IE.Document.getElementsByClassName("priceText__1853e8a5")(0).innerText
dt = IE.Document.getElementsByClassName("time__cbd9bff9")(0).innerText
obj.SetText (dd)
obj.PutInClipboard
MsgBox "USDTWD Spot Exchange Rate: " & dd & vbCrLf & dt
IE.Visible = False
IE.Quit
Set IE = Nothing
Application.StatusBar = ""
End Sub
看來是找不到
IE.Document.getElementsByClassName("priceText__1853e8a5")
先IE.visible = true
把IE打開,確認有這個DOM。
謝謝 pcw 的回覆!我對VBA不熟,故不太懂你所說的設中斷點檢查該如何做?奇怪的是我看 https://www.bloomberg.com/quote/USDTWD:CUR 裡classname "priceText__1853e8a5" 還存在,不知為何會找不到?!
p.s.我用IE11開啟該網址,網頁卻顯示異常,改用Firefox開才看到匯率。
那就是這個網頁使用了IE11不支援的語法。
改用XMLHTTP
去爬吧。
謝謝回覆!不過爬文幾天,雖然有很多XMLHTTP資料,但未找到很類似我的需求的XMLHTTP範例可用。若有資源請再提供,謝謝!我會再找找。