Я пытаюсь загрузить файл CSV в новую таблицу каждый раз, когда щелкаю в соответствующей ячейке, содержащей имя файла.
Для этого я использовал Macro Recorder.Затем я попытался изменить имя файла, который я дал во время записи, на общую переменную.
Проблема в том, что я не могу понять, что дать CSV.Document(File.Contents(""blablabla""))
в качестве записи.Я думал, что это путь к файлу, но это, похоже, не работает.
Dim sPath As String
Dim sFile As String
sFile = "file_XX"
sPath = ThisWorkbook.Path
sPath = sPath & "\" & sFile & ".csv"
MsgBox sPath
ActiveWorkbook.Queries.Add Name:=sFile, Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Csv.Document(File.Contents(sPath),[Delimiter="";"", Columns=13, Encoding=1252, QuoteStyle=QuoteStyle.None])" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " Source"
Sheets.Add After:=ActiveSheet
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=file_XX Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [file_XX]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = False
.ListObject.DisplayName = sFile
.Refresh BackgroundQuery:=False
End With
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Другими словами, вместо "" root \ MyFolder \ file_XX.csv "" я напрямую заменил sPath, и я получил сообщение об ошибке 1004. Я ожидал, что результаты будут такими же, как у макроса.
Какой тип переменной ожидает эта функция?