簡體   English   中英

使用 VBA 刷新數據透視表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM