2015-12-02 75 views
0

我對VBA非常陌生,對HTML更是如此。我想要做的是能夠點擊一個按鈕,並從網站檢索當前餘額。理想情況下,我想單擊一個按鈕,並通過所有信用卡鏈接循環並拉取當前餘額,但如果我能夠將其用於一個站點,我將很高興。過去幾天我在網上搜索過,並且能夠湊齊下面的內容。請原諒我試過的一些註釋掉的部分。任何幫助,並在五歲的條件下可以理解,將不勝感激。Excel 2010/2013 VBA從網站導入當前餘額

那麼,我哪裏出錯了?謝謝!!順便說一下,我已經將以下兩行以及相關的「變暗」切換爲相同的結果。 '不支持此屬性或方法的對象。'

With ieDoc 
.getElementsByClassName("amount").innerText 
End With 

' dd = IE.document.getElementsByClassName("amount").innerText 
Sub CurrentBalance() 

    Dim IE As Object 
    Dim ieDoc As Object 
    Dim dd As Variant 'IHTMLElementCollection 
    ' Create InternetExplorer Object 
    Set IE = CreateObject("InternetExplorer.Application") 
    IE.Visible = True 

    ' Send the form data To URL As POST binary request 
    IE.Navigate "https://www.discovercard.com" 

    Do Until Not IE.Busy And IE.readyState = 4 
     DoEvents 
    Loop 

    Set ieDoc = IE.document 

    With ieDoc 
    .getElementsByClassName("amount").innerText 
    End With 

' dd = IE.document.getElementByClassName("amount") 

    Range("B2").Value = ieDoc 


' Clean up 
    Set IE = Nothing 
    Set objElement = Nothing 
    Set objCollection = Nothing 

    Application.StatusBar = "" 
End Sub 

我道歉,我應該添加HTML部分:

href="/cardmembersvcs/personalprofile/pp/MyProfilePage?ICMPGN=ACHOME_ACCTSUMM_PROFILE_TXT" title="Profile">Profile</a></li> 
        <!-- WT blank content --> 
       </ul> 
      </div> 
     </div> 
     <div class="card-balances"> 
      <ul> 
       <li>Current Balance</li> 
       <li class="amount">$910.74</li> 
+0

在運行宏的計算機上安裝了哪個版本的Internet Explorer? IE9是支持'getElementsByClassName'的第一個IE版本' – barrowc

+1

我可能是錯的,但'getElementsByClassName()'返回一個數組,不是?因此,必須像'.getElementsByClassName(「amount」)[0] .innerText'(或者在循環中使用'.getElementsByClassName(「amount」)[nthElement] .innerText')...對不起,我不是非常熟悉VB ... – ankhzet

+0

@ankzhet'getElementsByClassName'返回一個IHTMLElementCollection,所以語法略有不同 - '.getElementsByClassName(「amount」)(0).innerText' - 但您的一般觀點完全正確 – barrowc

回答

0

替代這次到您當前密碼(藏在心裏 「設置ieDoc」 行同前) :

Set ieDoc = IE.document 

With ieDoc 
    Set dd = .getElementsByClassName("amount") 

    Range("B2").Value = dd(0).InnerText 
End With 

' Clean up 
IE.Quit 
Set ieDoc = Nothing 
Set IE = Nothing 

Application.StatusBar = "" 

End Sub 

這使用「getElementsByClassName」,因爲給定的HTML沒有任何ID爲「amount」的元素。這應該返回一個集合,我們從中獲取第一個項目(項目0),然後將其innerText複製到單元格B2。

雖然您嘗試訪問的網站上有任何形式的登錄或導航,但似乎缺少什麼。此代碼僅適用於您嘗試下載的數據在https://www.discovercard.com頁面上可見而無需登錄

+0

嗨barrowc, 我得到一個與未設定在範圍變量(「B2」)。值= DD(0).InnerText 這是非常艱難的東西,這段代碼業務。大聲笑 – Tony

+0

哦,並回答你的問題,我有一個應用程序,我登錄到網站,所以不應該有任何問題。 – Tony

+0

我在「range(」B2「)。value = dd(0).innertext」行中得到「對象變量或變量未設置」。不知道該怎麼辦。 – Tony