【问题标题】:Downloading and Formatting Web Data with Excel VBA使用 Excel VBA 下载和格式化 Web 数据
【发布时间】:2011-04-19 17:14:06
【问题描述】:

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

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

下载为 TXT 文件: 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

格式问题: 默认情况下,即使用 Excel 的 Web 数据导入向导,Excel 会导入整个表格,其中包含的列比需要的多。我试图隔离“关闭”列。我创建了一个宏来格式化表格以隔离“关闭”列,但是这个宏需要我手动从雅虎财经下载数据作为 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.从雅虎财经下载对应的历史数据 3. 将数据收盘价数据作为单列导入电子表格

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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

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

    【讨论】:

    • 我使用的是 Excel 2007。标准 Web 查询的问题是它会返回整个表格,而我只需要表格中的一列。有没有办法用 VBA 调整网络查询?
    • 我不这么认为,因为您必须选择一个 HTML 表格。但是您可以将此 Web 查询放在单独的工作表中,然后查找或复制/粘贴您需要的列。如果大小很关键,您甚至可以将此 Web 查询放在一个单独的工作簿中,您可以从该工作簿中将值复制/粘贴到主工作簿中。
    【解决方案2】:

    查看this SO discussion。几个看起来很有价值的建议。

    【讨论】:

    • 感谢您提供此链接。我喜欢将 txt 文件存储在变量中的想法。当用户更改股票代码、开始和结束日期等时,是否可以有一个动态 URL 更改?此外,既然数据存储在变量中,选择特定列并将该列导入电子表格应该相对简单,对吧?感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 2021-08-07
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 2013-11-22
    • 2015-12-07
    相关资源
    最近更新 更多