我正在尝试整合VBA代码以从存储在特定位置的CSV文件导入数据,并将数据粘贴到我想要的工作表中。我所做的只是记录了一个宏,我将文件位置存储在一个名为' path'的字符串变量中。并使用此变量指定文件位置。但是在执行代码之后,它显示一个错误,表示" Excel无法找到文本文件来刷新此外部数据范围"。下面提供了代码: 高级谢谢你的帮助。
Sub Macro1()
Dim path As String
path = InputBox("Provide the location of the file")
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;path.csv" _
, Destination:=Range("$A$1"))
.Name = "AO2576.log.0240021"
.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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
答案 0 :(得分:0)
您应该使用文件对话框打开文件,并相应地设置QueryTable。
Dim path: path = Application.GetOpenFilename("CSV Files (*.csv), *.csv")
If path = False Then Exit Sub
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & path, Destination:=Range("A1"))
...
End With
请注意,"TEXT;path.csv"
是一个硬编码字符串,它不是由用户刚刚选择的文件名设置的。 "TEXT;" & path
是要走的路。