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

如何使用vbaPowerpivot连接修改为csv文件? 我有一个Excel工作簿,连接到一个csv文件的Powerpivot模型。 在Powerpivot窗口中,我可以导航到Home-> Existing Connections并根据需要编辑文件path。 我不能接近编辑这个vba。

  • 我发现这个链接参数化Powerpivot连接。
    不幸的是,我不知道如何修改应用到CSV文件连接,而不是数据库连接。
  • 在这个页面上描述了另一种方法。 这种方法创build了一个连接到Excel本身的数据。 这个连接在Powerpivot中是可用的。 关键是不要在Powerpivot bc中创build连接,作者说在Powerpivot中创build的连接不能被vba修改。

我可以通过数据 – Data->Get External Data->From Text menu option手动创build此连接。

我可以在VBA中使用“Workbooks(”myWorkbook.xlsm“)创build相同的连接Connections.AddFromFile”data.csv“我可以在Data-> Connections-> Connections对话框中手动编辑这个连接,但是当我尝试使用WorkbookConnections.TextConnection属性在vba中设置此,vba说:“对象不支持此属性或方法”。

上面的链接侧重于数据库连接而不是csv文件连接。 但是,似乎可以使用Microsoft ACE OLEDB 12.0连接来设置csv文件,但是我不太明白。

在SO上也有类似的问题来解决vba修改数据源的问题(如下所示: 使用Excelmacros更改数据透视表外部数据源path )。

但是,我不想将数据带入Excel中的表格,我想连接到它,以便在Powerpivot中使用它。

我可以使用Power Query来做到这一点,但是因为我已经有了所需格式的csv,所以我不必介绍这个额外的步骤。

我在Windows 7上使用Excel 2013 64位。感谢您的帮助。

我一直在玩类似的东西。 还没有成功,但也许我们可以一起解决…

有一件事我注意到,看起来像CSV文件的这些连接实际上并不像你期望的那样是TextConnection,而是OLEDBConnections。

编辑:根据https://goo.gl/x17Nuj ,这是不可能的:

修改PowerPivot内部的连接后,Excel和PowerPivot连接之间的链接就会中断。 实际上,您不能再修改Excel中的连接属性,并且如果要加载另一个表,则必须使用PowerPivot加载项。 需要使用加载项意味着修改连接的选项在VBA中不再可用因为(如您所见),无法使用VBA修改PowerPivot连接。

(强调是我的)

我可以通过将csv文件连接设置为Microsoft.ACE.OLEDB.12.0连接来修改文件位置。 它实际上在数据连接向导中标记为“Microsoft Office 12.0 Access数据库引擎OLE DB提供程序”。 这个链接帮我弄明白了。 您需要添加“Microsoft ActiveX数据对象6.1”作为参考。 一旦手动创build连接,下面是我用来修改连接的代码:

 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文件的名称。 不能断开连接就不能编辑它。