我正在使用 CSV 文件(由事物方程序生成)作为外部数据源,我想从宏中更改其路径......我该怎么做?
对我的问题的另一个可接受的答案是指定相对于 excel 文件的路径的方法 - 还没有找到如何做 - 因为在我的情况下,csv 和 xls 都在同一个目录中。
答案1
Sub Import()
Dim FilePath As String
FilePath = "TEXT;C:\directory\" & Cells(1, 1).Value
ActiveWorkbook.Worksheets.Add
With ActiveSheet.QueryTables.Add(Connection:=FilePath, Destination:=Range("$A$1"))
.Name = "Book1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
当您将文件(例如 book3.csv)放入 sheet1 A1 中时,这将创建一个包含数据的新工作表;您将 C:\directory 更改为输入所在的目录,并且可以在第 5 行“范围”中更改输出范围
此外,第 3 行“Cells(1,1)”表示输入单元格,因此您可以根据需要从 Sheet1 A1 更改该单元格。您需要在引用单元格中指示文件扩展名,否则它将不知道要导入哪个文件。只需运行此宏,您就会得到一个包含目标数据的新工作表。如果您需要一个新的工作簿或将其插入现有工作表,请告诉我。
另外,如果你查看属性,这是一个逗号分隔的文件,你可以更改它,或者只录制你自己的宏(开发人员选项卡 -> 录制宏)并在顶部插入 FilePath 类型命令并更改连接命令