Board logo

標題: [發問] 樞紐分析表更新資料來源與重新整理問題 [打印本頁]

作者: joime    時間: 2015-11-26 13:13     標題: 樞紐分析表更新資料來源與重新整理問題

因為每天所看到的報表內容都一樣,只有來源資料會變動,所以想說透過複製樞紐分析表的方式進行
相關程式碼如下:
        Workbooks.Sheets("Analysis Table").PivotTables("WIP").ChangePivotCache _
        Workbooks.PivotCaches.create(xlDatabase, wo.Sheets("TotalWIP").UsedRange.Address)
        Workbooks.RefreshAll
        Workbooks.Close (True)

        PivotCache.Refresh
        RefreshTable
        RefreshAll
這三種方式都嘗試過了,也設定過檔案開起重新整理的方式,但是開啟檔案後,要展開樞紐分析表的資料時則會顯示
"儲存的樞紐分析表沒有資料。請用[更新資料]命令來更新樞紐分析表。" 警告畫面
手動執行重新整理後就會正常了。

想請問還有哪種方式可以避免此狀況。
作者: stillfish00    時間: 2015-11-26 13:48

回復 1# joime
Workbooks 是集合,沒有Workbooks.Sheets  這種寫法。

透過複製樞紐分析表??
最好附上檔案看看。
作者: joime    時間: 2015-11-26 15:20

本帖最後由 joime 於 2015-11-26 15:22 編輯

抱歉我重新表達我的問題,主要因為樞紐分析表要拉的欄位很多,因此想說能否透過複製的方式,
A工作簿已經有樞紐分析表與舊的資料來源,B工作簿有新的資料來源,
因此想將A工作簿的樞紐分析表sheet複製到B工作簿內,並修改資料來源為B工作簿的新資料來源
檔案部分由於公司有鎖著外網,無法傳檔
完整程式碼如下:
    Dim newDatapath As String
    Dim newDatawo As Workbook, vbawo As Workbook
   
    Application.ScreenUpdating = False
   
    newDatapath = "\Desktop\" & Format(Date, "yyyymm") & "\" & Format(Date, "yyyymmdd") & "WIP.xlsx"
   
    If Dir(newDatapath, vbDirectory) = "" Then
        MsgBox "請確認newData檔案是否已經產生"
    Else
        Set newDatawo = Workbooks.Open(path)
        Set vbawo = ThisWorkbook
        
        '複製樞紐分析表
        vbawo.Sheets("Analysis Table").Copy after:=newDatawo.Sheets(newDatawo.Sheets.Count)
        
        '變更資料來源
        newDatawo.Sheets("Analysis Table").PivotTables("WIP").ChangePivotCache _
        newDatawo.PivotCaches.create(xlDatabase, wo.Sheets("TotalWIP").UsedRange.Address, xlPivotTableVersion15)
        
        '重新整理
        newDatawo.RefreshAll
        
        '關閉檔案並儲存
        newDatawo.Close (True)
    End If
   
    Set newDatawo = Nothing
    Set vbawo = Nothing
   
    Application.ScreenUpdating = True

執行結果有成功樞紐分析表到B表中,但是展開樞紐分析表的資料時,則會跳出需重新整理等提示,
需手動執行重新整理




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)