我正在使用 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/