我正在尝试使用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')
第一个宏“导入”工作正常 . 但第二个使用源中的新数据刷新Pivot表的“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)
能否请你帮忙 ?
EDIT :
如您所见,我有一个工作表和一个名为TCD的数据透视表 .
EDIT : 实际上宏正在工作,我通过创建一个调用它的按钮来测试它 . 当我用powershell调用它时,它不起作用
2 回答
尝试使用下面的代码刷新工作表
"TCD"
中名为"TCD"
的PivotTable
,其中包含更新的PivotCache
.Code
我终于找到了一个有点愚蠢的问题 . 事实上,我正在刷新数据透视表,但我没有保存更改 . 这是我最终使用的宏,我使用了相同的PowerShell脚本
谢谢大家