【发布时间】:2016-03-06 02:47:48
【问题描述】:
我对 VBA 非常陌生,而对 HTML 则更少。我想要做的是能够单击一个按钮并从网站检索当前余额。理想情况下,我想单击一个按钮,让它遍历所有信用卡链接并提取当前余额,但如果我能让它在一个站点上工作,我会很高兴。在过去的几天里,我一直在网上搜索,并且能够拼凑出我下面的内容。请原谅一些被注释掉的部分,因为我正在反复试验。任何帮助,如果是 5 岁的孩子可以理解的话,将不胜感激。
那么,我哪里做错了?谢谢!!
顺便说一句,我已经切换了以下两行和相关的“暗淡”,结果相同。 '此属性或方法不支持对象。'
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>
【问题讨论】:
-
运行宏的机器上安装了哪个版本的 Internet Explorer? IE9是第一个支持
getElementsByClassName的IE版本 -
我可能错了,但是
getElementsByClassName()返回一个数组,不是吗?所以,必须像.getElementsByClassName("amount")[0].innerText一样(或与.getElementsByClassName("amount")[nthElement].innerText在循环中)......对不起,我对VB 不是很熟悉...... -
@ankzhet
getElementsByClassName返回一个 IHTMLElementCollection,因此语法略有不同 -.getElementsByClassName("amount")(0).innerText- 但您的一般观点是完全正确的 -
嗨...谢谢你们俩。我正在使用 IE 11。我已经更接近了以下内容:dd = IE.document.getElementById("amount") 但不确定如何将其传递给 B2。我没有错误。什么都没有。
-
如果你使用
getElementById,那么你的html应该看起来像<li id="amount">$910.74</li>