也没什么可分析的,直接上代码,看看是不是你需要的:
Sub GetPVT()
'定义一个1000行的数组,如果你预判工作簿中数据透视表数量可能大小1000,那就改成10000,甚至10万,以确保能大于数据透视表数量即可。
Dim arr(1000, 3) as string
i = 0
'遍历工作簿中的每个工作表
For Each sht In ActiveWorkbook.Worksheets
'遍历工作表中的每个数据透视表
For Each pvt In sht.PivotTables
'赋值工作表名称、数据透视表名称、数据源
arr(i, 0) = sht.Name
arr(i, 1) = pvt.name
arr(i, 2) = pvt.SourceData
i = i + 1
Next pvt
Next sht
'将数据写到工作表中
Cells(1, 1).Resize(i, 3) = arr
End Sub
最后写到将数据写到工作表中,没有判断会不会因为粘贴区域有数据透视表面失败,建议每次新建一个工作表,并将新工作表为活动工作表,然后运行代码。