excel - 我可以从 Excel VBA Web 查询获取流吗?

标签 excel vba excel-web-query

我正在使用 Excel VBA 的 WebQuery,使用类似于此示例的内容: (这个例子实际上是从这里复制粘贴的:http://support.microsoft.com/kb/213730并且我使用具有不同POST参数的不同URL)

Sub URL_Post_Query()

With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;http://webservices.pcquote.com/cgi-bin/excel.exe", _
    Destination:=Range("a1"))

    .PostText = _
        "QUOTE0=[""QUOTE0"",""Enter up to 20 symbols separated " & _
              "by spaces.""]"

   .BackgroundQuery = True
    .TablesOnlyFromHTML = True
    .Refresh BackgroundQuery:=False
    .SaveData = True
End With
End Sub

我需要能够进行特别大的查询(例如,假设我正在获取 20,000 种证券的股票价格信息),当我这样做时,Excel“锁定”并且不显示任何进度,而尽管查询确实成功完成,但它正在工作。

使用这种语法,有什么方法可以访问传入的数据流吗?这将通过两种方式提供帮助:我可以在收到数据时以较小的 block 处理数据,并且我可以创建一个进度表来向用户显示。

谢谢。

最佳答案

如果您想要更多控制,您可以从 Web 查询切换到使用 xmlhttp 实例之类的方式:这可以异步使用(不是 super 简单,但相当可行):

http://www.dailydoseofexcel.com/archives/2006/10/09/async-xmlhttp-calls/

请注意,当您发送大量符号时,不能保证 Web 服务会单独返回每个符号的响应:服务器通常会缓冲内容,直到整个响应完成。

您最好将报价分成多个请求,每个请求包含较少数量的符号。

关于excel - 我可以从 Excel VBA Web 查询获取流吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7040722/

相关文章:

sql - 使用 VBA 运行多个 SQL 查询 (Oracle) - 为什么这么慢?

vba - PowerPoint VBA - 按值传递形状似乎是通过引用发生的

excel - 宏 - 将同一行中的某些单元格(由复选框触发)复制到不同的工作表

mysql - 将多行mysql字符串转换为预定义的csv格式?

vba - VBA 中的重构 - 将部分代码移动到函数中不起作用

excel - 数字字段在 Excel、SSRS 中显示为文本

vba - 如何更改图表轴的字体属性

vba - 根据单元格值创建查询表

excel - 如何在 Microsoft Excel 2007 中自动进行 Web 查询登录以下载数据?

excel - SSIS:根据 Web 查询结果以编程方式创建新的 Excel 文件 - 如何保存 Web 查询表名称?