2009-12-18 58 views
1

我已成功向使用Microsoft Excel的Web服務發出類似於Ajax的請求。使用XML從ServerXMLHTTP響應中刷新數據透視表

我的目標是有一個按鈕,用戶可以單擊以下拉信息並刷新Excel文檔中的數據透視表和圖表,以反映出有關信息。

我可以將透視表設置爲具有源代碼的XML嗎?如果不是,桌子怎麼樣?

否則,我想我需要宏清除現有的信息,重新填充,然後刷新數據透視表?

只能在宏內存在的數據透視表?我目前通過「Sub」功能獲取信息。

我目前已將信息加載爲DomDocument。

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

最後一行不需要括號 - 應該是:xmlResult.loadXML結果 – barrowc 2009-12-20 17:45:49

回答

0

有兩種方法可以做到這一點。

第一種方法是使用XML映射。首先,使用菜單Developer中的選項XML Source(在Excel 2003中,我認爲它在菜單Data下),可以從XML模式或示例XML數據文件創建映射到工作表。完成之後,您可以導入將在映射範圍中顯示的XML數據。然後,您應該爲映射範圍分配一個名稱,並最終在命名範圍上構建一個數據透視表。在VBA中刷新來自HTTP服務的映射XML範圍相對容易編寫腳本。您命名的範圍將自動調整爲新的數據大小。這裏顯而易見的限制是工作表容納數據的大小,這在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