【发布时间】:2018-06-19 14:27:17
【问题描述】:
我想基于同一工作簿中的数据集(包含在工作表中)创建数据透视表。
当我运行宏时工作簿是打开的。数据集来自在 Access 中运行查询,然后将其导出到 Excel。我还尝试在运行宏之前保存工作簿。我正在使用 excel 2016。
这是我的代码:
Sub BusinessInteligenceCreatePivotTable()
Dim PivotSheet As Worksheet
Dim pvtCache As PivotCache
Dim pvt As PivotTable
'Determine the data range you want to pivot
Set pvtCache = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=wsPartsMachines.Name & "'!" & wsPartsMachines.Range("A1").CurrentRegion.Address, Version:=xlPivotTableVersion15)
'Create a new worksheet
With ThisWorkbook
Set PivotSheet = .Sheets.Add(After:=.Sheets(.Sheets.Count))
PivotSheet.Name = "Production Schedule"
End With
PivotSheet.Activate
Range("A1").Select
'Create Pivot table from Pivot Cache
'Set pvt = pvtCache.CreatePivotTable(TableDestination:=ActiveCell, TableName:="ProductionSchedule")
Set pvt = PivotSheet.PivotTables.Add(PivotCache:=pvtCache, TableDestination:=ActiveCell, TableName:="ProdSched")
End Sub
最后两行生成相同的错误消息。 “运行时错误 1004。无法打开数据透视表源文件 'C:\Users...'”。
有人知道如何解决这个问题吗? 谢谢。
编辑 当我录制宏时,VBA 给了我这段代码(它有效)。
Sub BusinessInteligenceCreatePivotTable()
Dim PivotSheet As Worksheet
With ThisWorkbook
Set PivotSheet = .Sheets.Add(After:=.Sheets(.Sheets.Count))
PivotSheet.Name = "Production Schedule"
End With
PivotSheet.Activate
Range("A1").Select
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Parts & Machines2!R1C1:R1328C14", Version:=6).CreatePivotTable _
TableDestination:=ActiveCell, TableName:="PivotTable1", DefaultVersion:=6
End Sub
我希望动态设置我的 SourceData 的范围。我的努力生成(使用 debug.print):'Parts & Machines2'!R1C1:R1328C14 它似乎与宏记录的不同:“Parts & Machines2!R1C1:R1328C14”。
是这个差异导致我找不到源数据的错误吗?
数据截图。
【问题讨论】: