Необходимо для метода QueryTables.Add вместо "D:\TestTableQuery\testfile.csv" (в vba коде указана переменная filePathCSV ) задать вызов диалогового окна "импорт текстового файла" в котором пользователь будет выбирать файл для импорта данных, а значение пути будет присвоенно переменной или использована непосредственно в теле объекта QueryTables ? Важно в будующем иметь доступ к пути D:\TestTableQuery\ и имени файла testfile.csv . Подскажите пожалуйста как правильно это реализовать?
Код
Sub TestTableQuery3()
'смена текущего каталога на :
ChDir "D:\"
' Создание нового листа
Workbooks.Add
'????????????????? Как вместо "D:\TestTableQuery\testfile.csv" задать вызов диалогового окна "импорт текстового файла"
' в котором пользователь будет выбирать файл для импорта данных, а значение пути будет присвоенно переменной или использована непосредственно в
' теле объекта QueryTables ?
' vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
Const filePathCSV As String = "D:\TestTableQuery\testfile.csv"
'????????????????? Коректно ли использовать такой код : Const filePathCSV As String = Application.GetOpenFilename
'????????????????? Правильных ли являеться две строки, что ниже:
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT; & filePathCSV", Destination:=Range("$A$1"))
' .CommandType = 0
'????? vvvvvvvvvvvvvvvvvvvvv .Name = "testfile.csv" обязательно ли использовать ?
.Name = "testfile.csv"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 65001
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
dim sf
sf = Application.GetOpenFilename("CSV files(*.csv),*.csv", 1, "Выбрать файл CSV", , False)
If VarType(sf) = vbBoolean Then
Exit Sub
End If
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & sf, Destination:=Range("$A$1"))