2017-06-30 166 views
0

我想使用調用Excel中的vba代碼的Powershell腳本自動刷新數據透視表。 我的powershell代碼是th。使用VBA刷新數據透視表

$excel = new-object -comobject excel.application 
$workbook = $excel.workbooks.open("$para_temp\RapportPalettes.xlsm") 
$worksheet = $workbook.worksheets.item("source") 
$excel.Run('Import') 
$worksheet = $workbook.worksheets.item("TCD") 
$excel.Run('MAJ') 

第一個宏「導入」工作得很好。但是,第二個「少校」,隨着源新數據刷新數據透視表不

我第一次嘗試這個宏少將:

Sub maj() 

Dim pt As PivotTable 



    Set pt = ActiveSheet.PivotTables("TCD") 

    pt.RefreshTable 

End Sub 

我沒有得到任何錯誤,但我pivote表沒有刷新,我必須手動完成。

然後我試圖這一個來改變數據的樞軸表的源:

Sub MAJ() 

Dim sht As Worksheet 
Dim SrcData As String 
Dim pvtCache As PivotCache 

'Determine the data range you want to pivot 
    Set sht = ThisWorkbook.Worksheets("Source") 
    SrcData = sht.Name & "!" & Range("A1:Z10000").Address(ReferenceStyle:=xlR1C1) 

'Create New Pivot Cache from Source Data 
    Set pvtCache = ActiveWorkbook.PivotCaches.Create(_ 
    SourceType:=xlDatabase, _ 
    SourceData:=SrcData) 

'Change which Pivot Cache the Pivot Table is referring to 
    Worksheets("TCD").Activate 
    ActiveSheet.PivotTables("TCD").ChangePivotCach (pvtCache) 

End Sub 

但是我有一個438錯誤在VBA:對象不支持此屬性或方法,用於該行

ActiveSheet.PivotTables("TCD").ChangePivotCach (pvtCache) 

請幫忙嗎?

編輯:

,你可以看到,我有一個工作表,命名爲TCD透視表。 Worsheet

Pivot table

編輯: 其實宏的工作,我通過創建一個按鈕調用它進行了測試。 當我使用PowerShell

+0

它不應該是「.ChangePivotCache」,而不是「.ChangePivotCach」? – thepip3r

+0

是的,這只是一個小費錯誤。我仍然得到相同的錯誤:對象不支持此屬性或方法,並在同一行 –

回答

0

我終於發現了問題這WASA有點笨。實際上我刷新了數據透視表,但我沒有保存這些變化。 這是宏觀最後我用,我用同樣的PowerShell腳本

Sub Test() 
Application.DisplayAlerts = False 
Dim TCD As PivotTable 
    For Each TCD In Worksheets("TCD").PivotTables 
      TCD.RefreshTable 
    Next 
    ThisWorkbook.Save 

    Application.DisplayAlerts = False 
End Sub 

感謝所有

2

稱它爲嘗試下面的代碼刷新PivotTable命名工作表"TCD""TCD"與更新PivotCache它不工作。

代碼

Option Explicit 

Sub MAJ() 

Dim sht As Worksheet 
Dim SrcData As String 
Dim pvtCache As PivotCache 
Dim pvtTbl As PivotTable 

'Determine the data range you want to pivot 
Set sht = ThisWorkbook.Worksheets("Source") 
SrcData = sht.Range("A1:Z10000").Address(False, False, xlA1, xlExternal) 

'Create New Pivot Cache from Source Data 
Set pvtCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=SrcData) 

'Set the pivot table object 
Set pvtTbl = ThisWorkbook.Worksheets("TCD").PivotTables("TCD") 
With pvtTbl 
    .ChangePivotCache pvtCache 'Change which Pivot Cache the Pivot Table is referring to 
    .RefreshTable ' refresh the Pivot Table 
End With 

End Sub 
+0

感謝您的答案。現在我得到錯誤1004:無法讀取該行上的Worsheet的屬性數據透視表:Set pvtTbl = ThisWorkbook.Worksheets(「TCD」)。PivotTables(「TCD」) –

+0

@SouhailOuabi所以它是要麼你沒有一個名爲「TCD」的工作表,或者在該工作表中沒有一個名爲「TCD」的數據透視表 –

+0

我確實有展位,您可以在我的編輯中看到(對不起這是法語) –