使用VBA和Excel从web保存自动更新的报价记录
我想用VisualBasic编写一个程序,可以自动将数据从YahooFinance(报价)导入Excel表格,并每分钟更新一次。我知道如何做到这一点,但是,我正在努力的是,当excel更新价格时,以前的价格将被删除,因为excel会在相同的单元格中重新写入新的价格;换句话说,随着时间的推移,我无法记录报价。我想知道,当程序更新时,是否有可能在不同的单元格中写入新的价格。使用VBA和Excel从web保存自动更新的报价记录,excel,vba,Excel,Vba,我想用VisualBasic编写一个程序,可以自动将数据从YahooFinance(报价)导入Excel表格,并每分钟更新一次。我知道如何做到这一点,但是,我正在努力的是,当excel更新价格时,以前的价格将被删除,因为excel会在相同的单元格中重新写入新的价格;换句话说,随着时间的推移,我无法记录报价。我想知道,当程序更新时,是否有可能在不同的单元格中写入新的价格。 我试图从以下来源获取价格:我假设您目前正在使用前端从web上获取数据。相反,请考虑使用Internet Explorer对象从
我试图从以下来源获取价格:我假设您目前正在使用前端从web上获取数据。相反,请考虑使用Internet Explorer对象从页面获取HTML:
'Declare IE object
Dim IE As Object
'Using late binding (instead of tools>>references so you don't get stuck on a version)
'Open IE
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = False
'Navigate to your web page so we can get the html
IE.Navigate "https://au.finance.yahoo.com/q?s=AUDUSD=X"
'Wait until its ready to go
Do While IE.busy
'Update the statusbar that we are waiting
Application.StatusBar = "Fetching stock price from yahoo"
DoEvents
Loop
'reset the statusbar
application.statusbar = False
然后使用Microsoft HTML对象库(在工具>>参考中)解析HTML结果
'Declare an HTML document
Dim html As HTMLDocument
'Drop html from IE to the HTMLDoc
Set html = IE.document
'Kill IE, we don't need it anymore
Set ie = Nothing
'Parse the HTML doc...
Dim objElement As HTMLObjectElement
Set objElement = html.getElementById("yfs_l10_audusd=x")
Sheet1.Range("A1").Value = objElement.innerText
一旦你从网页上获得了你所需要的价值,你可以把它贴在任何你喜欢的地方。我已将其粘贴在表1的A1范围内非常感谢JNevill的回答。但随着时间的推移,我仍在努力保持进口价格的历史记录。您有什么建议吗?查看如何在excel VBA中创建计时器。你可以用它每x分钟ping一次网站,然后得出一个新的股价。