美好的一天,
我试图从表中插入数据透视表,但也通过 VBA 将其添加到数据模型中。 我已手动记录该过程,并按照此链接的示例进行操作:https://powerpivotpro.com/2014/07/adding-tables-to-a-model-from-vba-in-excel-2013/
我更改了之前在代码中设置的数据路径和工作簿名称的变量。当我运行宏时,我在第一行收到以下错误:“运行时错误 5:无效的过程调用或参数”。
我以前从未通过 VBA 将数据透视表添加到数据模型中,因此不确定代码应该是什么样子(除了我在网上看到的并且我的似乎遵循示例)
MainWB.Connections.Add2 "WorksheetConnection_" & MainWB.Name & "!Table_SDCdata", "", _
"WORKSHEET;" & DataPath & "\" & MainWB.Name & ", " & MainWB.Name & "!Table_SDCdata", 7, True, False
MainWB.PivotCaches.Create(SourceType:=xlExternal, SourceData:=MainWB.Connections("WorksheetConnection_" & MainWB.Name & "!Table_SDCdata" _
), Version:=6).CreatePivotTable TableDestination:=wsPivotModel.Name & "!R1C1", TableName:="PvtSDCmodel", DefaultVersion:=6
变量如下:(**为了安全起见在这个问题中添加了替换,两个变量都是正确的并且在代码中使用了很多次没有问题)
MainWB.名称: **2791 SDC 内陆 12.08.2020.xlsbCOMBINED.xls
数据路径: C:_Store\Simone_d_drive\Desktop*�9\Macros* aw 数据** 91�0.08.16
任何帮助或指出正确的方向将非常感谢!
我设法找到了我的错误:
更新代码:
MainWB.Connections.Add2 "WorksheetConnection_" & MainWB.Name & "!Table_SDCdata", "", _
"WORKSHEET;" & DataPath & "\" & MainWB.Name, MainWB.Name & "!Table_SDCdata", 7, True, False
我必须删除 2 个引号,一个位于连接字符串末尾,第二个位于命令文本开头。
我有一个问题。当我的源数据位于我的工作簿中,但数据范围每个月都会不同,并且我没有使用数据的表格格式而是正常范围时,如何在此数据模型中使用变量。我的代码如下所示:
Dim myrange As String
myrange = Sheets("EKPO").Range("A1").CurrentRegion.Address
Workbooks("Book1").Connections.Add2 "WorksheetConnection_EKPO!" & myrange, _
, "", "WORKSHEET;[Book1]EKPO!" & myrange, "EKPO!" & myrange, 7, True, False
ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, SourceData:= _
ActiveWorkbook.Connections("WorksheetConnection_EKPO!" & myrange), Version _
:=8).CreatePivotTable TableDestination:="Data model!R1C1", TableName:= _
"PivotTable2", DefaultVersion:=8
我还关心引号和与号,或者是否有其他方法可以合并我的数据范围的地址或范围?
任何回应都将受到高度赞赏。谢谢!