使用Excel VBA将Powerpivot连接更改为csv文件

时间:2015-04-27 16:16:49

标签: excel vba excel-vba csv powerpivot

如何使用 vba 修改 Powerpivot 与csv文件的连接?我有一个带有Powerpivot模型的Excel工作簿,该模型连接到csv文件。在Powerpivot窗口中,我可以导航到Home-> Existing Connections并根据需要编辑文件路径。我无法接近在vba中编辑它。

  • 我在参数化Powerpivot连接时发现了this link 不幸的是,我无法弄清楚如何修改以应用于csv文件连接而不是数据库连接。
  • this page描述了另一种方法。此方法创建与Excel本身中的数据的连接。然后在Powerpivot中可以使用该连接。在Powerpivot中创建连接至关重要bc作者说,在Powerpivot中创建的连接不能被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位。感谢您的帮助。

2 个答案:

答案 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文件的名称。如果不断开连接,则无法进行编辑。