使用Excel VBA下载和格式化Web数据

时间:2010-10-01 06:44:05

标签: excel vba excel-vba

我需要帮助创建一个VBA宏,直接从Yahoo Finance的Historic Quotes网站下载收盘价数据,并将数据导入Excel电子表格列。

背景资料: 这是雅虎财经历史报价数据库的链接 -

要下载为TXT文件: http://ichart.finance.yahoo.com/table.txt?s= “StockTicker” &安培; d = “EndingMonth” 急症= “EndingDay” &安培; F = “EndingYear” &安培; G = d&安培; A = “EndingMonth” 和b = “EndingDay” 和C = “EndingYear” &安培;忽略= .TXT

格式化问题: 默认情况下,即使用Excel的Web数据导入向导,Excel将导入整个表,其中包含的列数多于所需的列数。我试图隔离“关闭”列。我创建了一个宏来格式化表以隔离“关闭”列,但是这个宏要求我手动从Yahoo Finance下载数据作为txt文件:

Sub Test_DownloadTextFile()
    Dim text As String
    'The variables for this URL (in light blue) should be retrieved from the spreadsheet, i.e. "StockTicker" will reference a cell with the ticker symbol "AAPL" in it and that will appear in the URL'
    text = DownloadTextFile("http://ichart.finance.yahoo.com/table.txt?s="StockTicker"&d="EndingMonth"&e="EndingDay"&f="EndingYear"&g=d&a="EndingMonth"&b="EndingDay"&c="EndingYear"&ignore=.txt")

    'At this point I should have the historical quotes table stored in the variable text. How do I select the 4th column and import it into a specific spreadsheet column?'
    Debug.Print text
  End Sub

如何创建一个宏: 1.参考关键变量的电子表格,例如“StockTicker”,“EndingMonth”等。 2.从Yahoo Finance下载相应的历史数据 3.将数据收盘价格数据作为单个列导入电子表格

我非常感谢这个问题的实际解决方案。如果我需要澄清我的问题或手头的任务,请告诉我。谢谢!

2 个答案:

答案 0 :(得分:2)

建议:这似乎是Web查询的完美案例 你有什么理由不使用它吗?您可以只复制之后需要的列。 您没有指定Excel版本,但在2003年它是在数据/导入外部数据上。

答案 1 :(得分:1)

结帐this SO discussion。一些似乎值得的建议。