使用VBA刷新数据透视表

时间:2017-06-30 12:10:20

标签: excel vba excel-vba powershell

我正在尝试使用Powershell脚本自动刷新数据透视表,该脚本调用excel中的vba代码。 我的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的数据透视表。 Worsheet

Pivot table

编辑: 实际上宏正在工作,我通过创建一个调用它的按钮来测试它。 当我用powershell

调用它时,它不起作用

2 个答案:

答案 0 :(得分:2)

尝试以下代码,使用更新后的PivotTable刷新工作表"TCD"中名为"TCD"的{​​{1}}。

<强> 代码

PivotCache

答案 1 :(得分:0)

我终于找到了一个有点愚蠢的问题。事实上,我正在刷新数据透视表,但我没有保存更改。 这是我最终使用的宏,我使用了相同的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

全部谢谢