Что File.Contents принимает в качестве аргумента в VBA для загрузки файла CSV? - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь загрузить файл 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. Я ожидал, что результаты будут такими же, как у макроса.

Какой тип переменной ожидает эта функция?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...