2015-09-07 47 views
1

我有一个Excel文件,通过“连接”菜单从多个CSV文件中提取数据。我遇到的问题是我需要能够从VBA中更改CSV文件的路径。编辑“文本连接”路径

经过反复Binging(这几乎是一个坏词)我遇到了一些解决方案,但它们涉及SQL连接而不是文本连接。由于文件是CSV文件,因此Excel会将其设置为文本连接,因此不会修改ODBC连接字符串(尝试从VBA进行修改时出现错误)。我也挖掘了MSDN文档无济于事。

有谁知道在VBA中更改Excel中“文本”连接路径的方法吗?

另外,因为我在这个话题上,有没有可能有文件的相对路径而不是完整的文件路径(比如“\ data \ some_report.csv”而不是“c:\ somedir \ data” \ some_report.csv“)?

回答

2

至于你提到...

我遇到了一些解决方案,但它们涉及的SQL连接,而不是一个文字连接。

因此,使用.TextConnection.Connection,而不是.ODBCConnection.Connection :)

下面是一个简单的例子。如适用,请修改它。

Sub Sample() 
    Dim Conn As Variant 
    Dim ConString As String 
    Dim oldPath As String, NewPath As String 

    NewPath = "C:\MyPath.Csv" 

    Set Conn = ActiveWorkbook.Connections.Item(1) 

    Debug.Print Conn.TextConnection.Connection 
    '==> TEXT;C:\Users\Siddharth\Desktop\Delete Later\Output.csv 

    ConString = Conn.TextConnection.Connection 

    oldPath = Split(ConString, ";")(1) 

    ConString = Replace(ConString, oldPath, NewPath) 

    Conn.TextConnection.Connection = ConString 
End Sub 
+0

我作为认为这是一个[QueryTable.Connection](https://msdn.microsoft.com/en-us/library/office/ff837414.aspx)属性。 [TextConnection.Connection](https://msdn.microsoft.com/en-us/library/office/microsoft.office.interop.excel.textconnection.connection.aspx)属性似乎不适用于VBA。 – Jeeped

+0

也许conn.Refresh需要立即更新数据:) –

+0

@jeeped建议的解决方案在我的安装完美工作,只要我导入文件为“从文本”。可能是特定版本(Office15在这里) –