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

问题描述 投票:2回答:2

如何使用vba修改与csv文件的Powerpivot连接?我有一个带有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文件连接。但是,似乎可以使用Microsoft ACE OLEDB 12.0连接设置csv文件,但我无法理解它。

在SO上有类似的问题来解决vba修改枢轴源(例如:Changing pivot table external data source path with Excel macro)。

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

我可以用Power Query做到这一点,但由于我已经有了所需格式的csv,我宁愿不必介绍这个额外的步骤。

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

excel vba excel-vba csv powerpivot
2个回答
1
投票

我一直在玩类似的东西。还没有成功,但也许我们可以一起搞清楚......

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

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

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

(重点是我的)


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

© www.soinside.com 2019 - 2024. All rights reserved.