Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Excel VBA将Powerpivot连接更改为csv文件_Vba_Excel_Csv_Powerpivot - Fatal编程技术网

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

使用Excel VBA将Powerpivot连接更改为csv文件,vba,excel,csv,powerpivot,Vba,Excel,Csv,Powerpivot,如何使用vba修改到csv文件的Powerpivot连接?我有一个Excel工作簿,带有连接到csv文件的Powerpivot模型。在Powerpivot窗口中,我可以导航到主页->现有连接,并根据需要编辑文件路径。我无法在vba中编辑此内容 我在参数化Powerpivot连接上发现了错误。 不幸的是,我不知道如何修改以应用于csv文件连接而不是数据库连接 上介绍了另一种方法。这种方法创建与Excel本身中数据的连接。该连接随后在Powerpivot中可用。不在Powerpivot bc中创建

如何使用vba修改到csv文件的Powerpivot连接?我有一个Excel工作簿,带有连接到csv文件的Powerpivot模型。在Powerpivot窗口中,我可以导航到主页->现有连接,并根据需要编辑文件路径。我无法在vba中编辑此内容

  • 我在参数化Powerpivot连接上发现了错误。
    不幸的是,我不知道如何修改以应用于csv文件连接而不是数据库连接
  • 上介绍了另一种方法。这种方法创建与Excel本身中数据的连接。该连接随后在Powerpivot中可用。不在Powerpivot bc中创建连接至关重要。作者说,vba无法修改在Powerpivot中创建的连接
我可以通过手动创建此连接
数据->获取外部数据->从文本菜单选项

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

上面的链接主要关注数据库连接,而不是csv文件连接。但是,似乎可以使用 Microsoft ACE OLEDB 12.0连接,但我不能完全掌握它

在上有类似的问题,以便解决vba修改数据透视源的问题(如此处:)

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

我可能可以用powerquery来实现这一点,但是因为我已经有了所需格式的csv,所以我不想引入这个额外的步骤


我在Windows7上使用64位Excel 2013。谢谢你的帮助。

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

我注意到的一件事是,这些到CSV文件的连接看起来并不像您预期的那样是文本连接,而是OLEDB连接

编辑:根据,这是不可能的:

修改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”作为参考。手动创建连接后,下面是我用来修改连接的代码:

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文件的名称。在不断开连接的情况下,您无法编辑它