iT邦幫忙

0

Excel VBA 擷取網頁匯率問題 (執行階段錯誤'91')

vane 2018-10-05 14:12:045507 瀏覽
  • 分享至 

  • xImage

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
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
paicheng0111
iT邦大師 5 級 ‧ 2018-10-05 16:43:51

看來是找不到

IE.Document.getElementsByClassName("priceText__1853e8a5")

IE.visible = true把IE打開,確認有這個DOM。

vane iT邦新手 5 級 ‧ 2018-10-05 16:53:11 檢舉

謝謝 pcw 的回覆!我對VBA不熟,故不太懂你所說的設中斷點檢查該如何做?奇怪的是我看 https://www.bloomberg.com/quote/USDTWD:CUR 裡classname "priceText__1853e8a5" 還存在,不知為何會找不到?!
p.s.我用IE11開啟該網址,網頁卻顯示異常,改用Firefox開才看到匯率。

那就是這個網頁使用了IE11不支援的語法。
改用XMLHTTP去爬吧。

vane iT邦新手 5 級 ‧ 2018-10-09 10:21:28 檢舉

謝謝回覆!不過爬文幾天,雖然有很多XMLHTTP資料,但未找到很類似我的需求的XMLHTTP範例可用。若有資源請再提供,謝謝!我會再找找。

我要發表回答

立即登入回答