我有一个 Excel 工作簿,可以自动更新 CSV 文件中的工作表。这些从硬编码文件夹 (c:\temp\premiumreports\name_of_CSV_file.csv) 中提取数据。
此方法迫使我每次都将所有内容放入 c:\temp\premiumreports 中,或者如果我将文件发送给客户,他们必须创建相同的目录结构。
我想将 xlsx 文件与必要的 CSV 文件一起放入任何文件夹(c:\report 或用户桌面),当我打开 xlsx 时,数据会自动导入。
最佳答案
如果工作簿文件始终与 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/