使用VBA和Excel检索paytoshi.org余额

我从网站paytoshi.org得到这个HTML代码摘录:

<table class="table keyvalue-table"> <tbody> <tr> <td class="kv-key"><i class="fa fa-bitcoin kv-icon kv-icon-primary"></i> Current*</td> <td class="kv-value">0.00001578</td> </tr> <tr> <td class="kv-key"><i class="fa fa-bitcoin kv-icon kv-icon-primary"></i> Total Paid</td> <td class="kv-value">0.00000000</td> </tr> <tr> <td class="kv-key"><i class="fa fa-bitcoin kv-icon kv-icon-secondary"></i> Revenue last 24h</td> <td class="kv-value">0.00000000</td> </tr> <tr> <td class="kv-key"><i class="fa fa-bitcoin kv-icon kv-icon-secondary"></i> Revenue last week</td> <td class="kv-value">0.00000000</td> </tr> <tr> <td class="kv-key"><i class="fa fa-exchange kv-icon kv-icon-success"></i> Total Payouts</td> <td class="kv-value">27</td> </tr> </tbody> </table> 

我只需要检索当前的*余额(在上面贴的代码我只需要这个数据:0.00001578,我想把它放在工作表(“平衡”)。范围(“A1”)。

我试过这个代码,但没有成功:

  ' Imposta le variabili. Dim strIndirizzoWeb, strIndirizzoBitcoin As String ' InternetExplorer.Application. Dim objIE As Object ' HTMLDocument. Dim objHTML As Object ' IHTMLElementCollection. Dim objLista As Object ' IHTMLElement. Dim objL As Object ' Contatori ciclo For e Range. Dim intF, intR As Integer ' Contatore. Dim intX As Integer ' Crea l'oggetto IE. Set objIE = CreateObject("InternetExplorer.Application") ' Mette nelle celle "No" per indicare che si stanno aggiornando i dati. Worksheets("Saldi").Range("M15:M17").Value = "No" ' Ho 3 microwallet in Paytoshi. For intF = 0 To 2 With objIE ' Nasconde IE. .Visible = False ' Visualizza IE. .Visible = True intR = 15 + intF ' Inserisce nell'indirizzo web l'indirizzo del microwallet preso dal foglio Saldi. .Navigate "https://paytoshi.org/" & Worksheets("Saldi").Range("N" & intR & "").Value & "/balance" ' Attende fino a che IE non ha finito di leggere la pagina. Do Until .readyState = 4 Application.StatusBar = "Sto scaricando le informazioni. Attendere, prego..." DoEvents Loop ' Reimposto la StatusBar come in origine. Application.StatusBar = "Pronto" Set objHTML = .document Do Until objHTML.readyState = "complete" DoEvents Loop ' Attende 5 secondi. Application.Wait Now + TimeValue("00:00:05") End With ' Restituisce la lista degli elementi <TD>. Set objLista = objHTML.getElementsByTagName("TD") For Each objL In objLista Debug.Print objL.innerText ' Si accerta che l'elemento sia chiamato "ajax-data data-pending". If InStr(1, objL.innerText, "Current*") > 0 Then Worksheets("Saldi").Range("P" & intR & "").Value = objL.innerText End If Next Worksheets("Saldi").Range("M" & intR & "").Value = "Ok" Application.StatusBar = "Informazioni Faucetbox per il MicroWallet " & Worksheets("Saldi").Range("N" & intR & "").Value & " scaricate." Next intF 

您正在查看错误元素的内部文本。 检查整个行而不是单元格:

  Set objLista = objHTML.getElementsByTagName("tr") For Each objL In objLista ' Si accerta che l'elemento sia chiamato "ajax-data data-pending". If InStr(1, objL.innerText, "Current*") > 0 Then Dim balance As Double balance = Val(Replace(objL.innerText, "Current*", vbNullString)) Worksheets("Saldi").Range("P" & intR & "").Value = balance End If Next