excel - Excel 中用于 CSV 导入的相对路径

标签 excel vba

我有一个 Excel 工作簿,可以自动更新 CSV 文件中的工作表。这些从硬编码文件夹 (c:\temp\premiumreports\name_of_CSV_file.csv) 中提取数据。

此方法迫使我每次都将所有内容放入 c:\temp\premiumreports 中,或者如果我将文件发送给客户,他们必须创建相同的目录结构。

我想将 xlsx 文件与必要的 CSV 文件一起放入任何文件夹(c:\report 或用户桌面),当我打开 xlsx 时,数据会自动导入。

当前工作簿连接
enter image description here

最佳答案

如果工作簿文件始终与 CSV 文件位于同一文件夹中,您可以使用 ActiveWorkbook.Path 方法设置相对路径。

假设 csv 文件名和连接名称相同的示例:

Sub refreshMsgConnection()
    Dim csvFileName As String
    csvFileName = "msg_by_weeks.csv"

    Dim filePath As String
    filePath = ActiveWorkbook.path

    Dim conString As String
    conString = "TEXT;" & filePath & "\" & csvFileName

    With ActiveWorkbook.Connections("msg_by_weeks").Ranges.Item(1).QueryTable
        .connection = conString
        .TextFilePlatform = 437
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .TextFilePromptOnRefresh = False
        .Refresh BackgroundQuery:=False
    End With
End Sub

您可能需要根据您的配置使用一些设置,例如分隔符等。如果您遇到问题,请在使用所需格式设置新连接时录制宏,然后复制此子中的设置.

如果没有找到文件,会弹出文件选择框,供用户定位所需的文件。

关于excel - Excel 中用于 CSV 导入的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40534107/

相关文章:

vba - 通过宏保存到 Excel 中的多个位置

excel - 如何使图表中的所有系列颜色相同?

Excel VBA - 检查工作表是否受密码保护

arrays - vba 将数组值设置为 NaN

excel - 获取对象的所有属性的列表

excel - Apache POI 有 Scala 包装器吗?

excel - 给定 A 列中的值,在 EXCEL 中的 B 列中找到最小值/最大值

vba - 有没有办法在Excel中查看Application.OnTime的预定程序?

excel - 使用 VBA 禁用关闭 (X) 并需要一个按钮来关闭和保存

excel - 没有行号的错误消息