【问题标题】:Refresh Pivot Table With XML From ServerXMLHTTP Response使用来自 ServerXMLHTTP 响应的 XML 刷新数据透视表
【发布时间】:2010-12-28 04:26:06
【问题描述】:

我已经成功地使用 Microsoft Excel 向 Web 服务发出了类似 Ajax 的请求。

我的目标是有一个按钮,用户可以单击该按钮来下拉信息并刷新 excel 文档中的数据透视表和图表以反映更新的信息。

我可以将数据透视表设置为以 XML 作为源吗?如果没有,那桌子呢?

否则,我想我需要让宏清除现有信息,重新填充然后刷新数据透视表?

只能存在于宏中的数据透视表可以吗?我目前正在通过“子”功能获取信息。

我目前将信息加载为 DomDocument。

    Dim xmlResult As MSXML2.DOMDocument
    Set xmlResult = New MSXML2.DOMDocument
    xmlResult.LoadXML (results)

【问题讨论】:

  • 最后一行不需要括号 - 应该是:xmlResult.loadXML results

标签: excel vba xmlhttprequest xml


【解决方案1】:

有两种方法可以做到这一点。

第一种方法是使用 XML 映射。首先,使用菜单 Developer 中的 XML Source 选项(在 Excel 2003 中,我认为它位于菜单 Data 下),您可以从 XML 模式或示例 XML 数据文件创建一个映射到工作表中。完成后,您可以导入 XML 数据,这些数据将显示在映射范围中。然后,您应该为映射范围指定一个名称,最后在命名范围上构建一个数据透视表。从 HTTP 服务刷新映射的 XML 范围在 VBA 中相对容易编写脚本。您的命名范围将自动调整为新的数据大小。这里明显的限制是保存数据的工作表的大小,这在 Excel 2007 之前通常是一个问题,只有 65,000 行。

另一种我只是模糊记得的方法,它涉及设置 PivotCache 对象的 Recordset 属性。 Recordset 通常来自数据库查询,但它可以由 XML 构建,前提是它是 MS Persist XML。这会使它变得更加困难,因为您必须将 XML 转换为 MS Persist XML。这是一个将 Recordset 转换为 MS Persist XML 并返回的脚本:http://www.freevbcode.com/ShowCode.Asp?ID=1204

【讨论】:

    猜你喜欢
    • 2018-12-30
    • 1970-01-01
    • 2016-09-07
    • 2021-02-20
    • 2010-11-03
    • 2021-04-12
    • 1970-01-01
    相关资源
    最近更新 更多