![](/img/trans.png)
[英]Refreshing an Excel Pivot Table data source with VBA in MS Access
[英]Refreshing a Pivot table with VBA
我正在嘗試使用在 Excel 中調用 vba 代碼的 Powershell 腳本自動刷新數據透視表。 我的powershell代碼如下。
$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')
第一個宏“導入”工作正常。 但是使用源中的新數據刷新數據透視表的第二個“MAJ”沒有
我首先在 maj 中嘗試了這個宏:
Sub maj()
Dim pt As PivotTable
Set pt = ActiveSheet.PivotTables("TCD")
pt.RefreshTable
End Sub
我沒有收到任何錯誤,但我的數據透視表沒有刷新,我必須手動完成。
然后我嘗試了這個來更改數據透視表的數據源:
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
但我在 VBA 中有 438 錯誤:對象不支持此行的此屬性或方法
ActiveSheet.PivotTables("TCD").ChangePivotCach (pvtCache)
能否請你幫忙 ?
編輯:
如您所見,我確實有一個工作表和一個名為 TCD 的數據透視表。
編輯:實際上宏正在工作,我通過創建一個調用它的按鈕來測試它。 當我用 powershell 調用它時它不起作用
嘗試使用以下代碼使用更新的PivotCache
刷新工作表"TCD"
名為"TCD"
的PivotTable
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
我終於找到了這個有點愚蠢的問題。 事實上,我正在刷新數據透視表,但我沒有保存更改。
這是我最終使用的宏,我使用了相同的 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
謝謝大家
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.