我正在尝试使用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)
你可以帮忙吗?
编辑:
编辑: 实际上宏正在工作,我通过创建一个调用它的按钮来测试它。 当我用powershell
调用它时,它不起作用答案 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
全部谢谢