【发布时间】:2019-12-04 00:51:50
【问题描述】:
目标是循环遍历 Excel Power Pivot、数据透视表并将每个过滤结果打印到特定文件位置的 PDF 中。
当代码到达输出的 for 循环时,它给了我一个错误
“运行时错误 - 438 对象不支持该属性或方法”
上线For Each pi In pt
Sub Button1_Click()
Dim strPath As String
Dim wksSource As Worksheet
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim cf As CubeField
Set wksSource = Worksheets("Summary for Each Analyst")
Set pt = wksSource.PivotTables("PivotTable1")
Set cf = pt.CubeFields("[Std_MainData].[CredentialingAnalyst]")
If cf.Orientation <> xlPageField Then
MsgBox "There's no 'Credentialing Analyst' field in the Report Filter. Try again!", vbExclamation
End If
strPath = "H:\"
If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
ActiveWorkbook.ShowPivotTableFieldList = False
pt.PivotCache.Refresh
For Each pi In pt
wksSource.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPath & pi.Name & ".pdf"
Next pi
【问题讨论】:
-
有人有什么想法吗?
-
pi 属于 pf,不属于 pt。你不能说“pi in pt”。必须是pt.pf中的"pi。例如:Worksheets("sheet1").PivotTables(1).PivotFields("year").PivotItems("1998").Visible = False
-
早上好,可以评论为代码吗?我尝试将我的代码更改为“pt.pf 中的 pi”,它给了我与上面写的相同的错误。请记住,这是一个 Power Pivot,因此它是基于多维数据集的,我不知道这是否会产生影响,或者不循环遍历该多维数据集的数据透视表。 @RADO
标签: excel vba for-loop pivot-table powerpivot