当查询完成时,我如何 post 处理来自 Excel 网络查询的数据?
How can I post-process the data from an Excel web query when the query is complete?
作为电子表格开发人员,我试图将两组行拼接在一起:一组是从网络查询到我拥有的网络服务,另一组是电子表格用户(不是我)添加的手动行.
Excel 内置的 Web 查询/连接对象仅提供两种模式:我可以打开 "Enable background refresh" 使 Web 查询异步,或者取消选中它。
如果不选中,Excel 会在查询执行时冻结,这是不可取的。检查了一下,似乎没有任何类型的回调或事件钩子可以通知,所以我可以对刷新的网络数据进行操作。
还有其他方法吗?
Excel 支持将 URL 作为另一个 Excel 工作簿打开的能力,通过 Workbooks.Open method:
Sub OpenUSDRatesPage()
Dim objBK As Workbook
Dim objRng As Range
'Open the page as a workbook.
Set objBK = Workbooks.Open("http://www.x-rates.com/tables/USD.HTML")
'Find the Canadian Dollar cell.
Set objRng = objBK.Worksheets(1).Cells.Find("Canadian Dollar")
'Retrieve the exchange rate.
MsgBox "The CAD/USD exchange rate is " & objRng.Offset(-6, -1).Value
End Sub
调用是同步的,因此您可以在调用 Open 后立即对新工作簿中的结果数据进行操作。
加载工作簿时,Excel 将显示进度条。完成后,您可以调用 .Close 关闭 Web 数据工作簿。 (例如,对于 MSDN 示例,您将在完成后调用 objBK.Close
。)
使用此方法的注意事项:
- 您需要自己将数据从 Web 工作簿迁移到您自己的 (
ThisWorkbook
),这与具有设定目标的可刷新 Excel Web 查询不同。
- 如果您的 Web 终结点的文档名称与在 Excel 中打开的文档的名称相匹配,用户将收到一条警告,指出打开了同名文档。
Excel 网络查询利用称为 QueryTable 的对象来执行检索和显示数据的业务。
可以通过 VBA 访问 QueryTable。
就像图表对象一样,查询表对象具有只能通过使用 class 模块 中的 WithEvents
关键字来响应的事件,像这样:
Private WithEvents MyQueryTable As QueryTable
Private Sub MyQueryTable_AfterRefresh(ByVal Success As Boolean)
'Do your post processing here...
End Sub
作为电子表格开发人员,我试图将两组行拼接在一起:一组是从网络查询到我拥有的网络服务,另一组是电子表格用户(不是我)添加的手动行.
Excel 内置的 Web 查询/连接对象仅提供两种模式:我可以打开 "Enable background refresh" 使 Web 查询异步,或者取消选中它。
如果不选中,Excel 会在查询执行时冻结,这是不可取的。检查了一下,似乎没有任何类型的回调或事件钩子可以通知,所以我可以对刷新的网络数据进行操作。
还有其他方法吗?
Excel 支持将 URL 作为另一个 Excel 工作簿打开的能力,通过 Workbooks.Open method:
Sub OpenUSDRatesPage()
Dim objBK As Workbook
Dim objRng As Range
'Open the page as a workbook.
Set objBK = Workbooks.Open("http://www.x-rates.com/tables/USD.HTML")
'Find the Canadian Dollar cell.
Set objRng = objBK.Worksheets(1).Cells.Find("Canadian Dollar")
'Retrieve the exchange rate.
MsgBox "The CAD/USD exchange rate is " & objRng.Offset(-6, -1).Value
End Sub
调用是同步的,因此您可以在调用 Open 后立即对新工作簿中的结果数据进行操作。
加载工作簿时,Excel 将显示进度条。完成后,您可以调用 .Close 关闭 Web 数据工作簿。 (例如,对于 MSDN 示例,您将在完成后调用 objBK.Close
。)
使用此方法的注意事项:
- 您需要自己将数据从 Web 工作簿迁移到您自己的 (
ThisWorkbook
),这与具有设定目标的可刷新 Excel Web 查询不同。 - 如果您的 Web 终结点的文档名称与在 Excel 中打开的文档的名称相匹配,用户将收到一条警告,指出打开了同名文档。
Excel 网络查询利用称为 QueryTable 的对象来执行检索和显示数据的业务。
可以通过 VBA 访问 QueryTable。
就像图表对象一样,查询表对象具有只能通过使用 class 模块 中的 WithEvents
关键字来响应的事件,像这样:
Private WithEvents MyQueryTable As QueryTable
Private Sub MyQueryTable_AfterRefresh(ByVal Success As Boolean)
'Do your post processing here...
End Sub