如何使用 vba 修改 Powerpivot 与csv文件的连接?我有一个带有Powerpivot模型的Excel工作簿,该模型连接到csv文件。在Powerpivot窗口中,我可以导航到Home-> Existing Connections并根据需要编辑文件路径。我无法接近在vba中编辑它。
我可以通过手动创建此连接
Data->Get External Data->From Text menu option
。
我可以使用“Workbooks(”myWorkbook.xlsm“)在vba中创建相同的连接.Connections.AddFromFile”data.csv“。我可以在Data-> Connections-> Connections对话框中手动编辑此连接。但是,当我尝试使用WorkbookConnections.TextConnection属性在vba中设置它时,vba说“对象不支持此属性或方法”。
以上链接侧重于数据库连接而不是csv文件连接。但是,似乎可以使用a设置csv文件 微软ACE OLEDB 12.0连接,但我无法把握它。
在SO上有类似的问题来解决vba修改数据透视源(例如:Changing pivot table external data source path with Excel macro)。
但是,我不想将数据带入Excel中的表格,我想连接到它,以便我可以在Powerpivot中使用它。
我可能会使用Power Query执行此操作,但由于我已经拥有所需格式的csv,因此我不必介绍此额外步骤。
我在Windows 7上使用Excel 2013 64位。感谢您的帮助。
答案 0 :(得分:1)
我一直在玩类似的东西。还没有成功,但也许我们可以一起搞清楚......
我注意到的一件事是,看起来这些与CSV文件的连接实际上并不像你期望的那样是TextConnections,而是OLEDBConnections。
编辑:根据https://goo.gl/x17Nuj,这是不可能的:
修改PowerPivot内部的连接后,Excel和PowerPivot连接之间的链接就会中断。实际上,您无法再修改Excel中的连接属性,如果要加载另一个表,则必须使用PowerPivot加载项。 需要使用加载项意味着在VBA中不再提供修改连接的选项因为(如您所见),无法使用VBA修改PowerPivot连接。
(重点是我的)
答案 1 :(得分:0)
我可以通过将csv文件连接设置为Microsoft.ACE.OLEDB.12.0连接来修改文件位置。它实际上在数据连接向导中标记为“Microsoft Office 12.0 Access数据库引擎OLE DB提供程序”。这link让我弄明白了。您需要添加“Microsoft ActiveX Data Objects 6.1”作为参考。手动创建连接后,这是我用来修改连接的代码:
Sub editConnection()
With ActiveWorkbook.Connections("myConnectionName").OLEDBConnection
.Connection = "OLEDB;Provider= Microsoft.ACE.OLEDB.12.0; " & _
"Data Source=\\something.com\shared\myDepartment\newDirectory; " & _
"Mode=Read;Extended Properties = ""Text;HDR=Yes;FMT=Delimited;"""
End With
ActiveWorkbook.Connections("myConnectionName").Refresh
End Sub
我没弄明白如何修改文件名。这也会强制PowerPivot中的表名称为csv文件的名称。如果不断开连接,则无法进行编辑。