У меня есть сценарий, который я собрал для импорта нескольких текстовых файлов, которые являются полными двоеточиями, разделенными на новые книги для каждого выбранного файла. Он составляет около 99% функциональности, кроме того, что он, кажется, вставляет все данные из выбранных текстовых файлов в столбец после правильно импортированных столбцов в новую книгу. Я не совсем уверен, какая часть кода вызывает вложение этой конкретной строки. Ниже приведена основная часть кода. Может ли кто-нибудь определить, где может быть проблема?Импорт нескольких текстовых файлов в новые рабочие книги Excel с Excel VBA
Также я хочу сказать спасибо сообществу здесь. Я многому научился, просмотрев другие сообщения на этом форуме.
FilesToOpen = Application.GetOpenFilename _
(FileFilter:="Text Files (*.txt), *.txt", _
MultiSelect:=True, Title:="Text Files to Open")
For i = LBound(FilesToOpen) To UBound(FilesToOpen)
Set wkb = Workbooks.Open(FilesToOpen(i))
Set wks = wkb.ActiveSheet
With wks.QueryTables.Add(Connection:= _
"TEXT;" & FilesToOpen(i), Destination:=Range("A1"))
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.RefreshStyle = xlInsertDeleteCells
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = True
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(2, 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
Next i
Где вы хотите выход идти? Прямо сейчас вы создаете 'QueryTable' в' wks', который является 'ActiveSheet'' wkb', который является только что открывшимся файлом. Вы хотите, чтобы результат в файле, который вы открываете? Затем, если это то, что вы хотите, тогда 'Destination: = Range (« A1 »)' определяет фактическое место на этом «Worksheet», где начинается новая таблица. –
Я пытаюсь поместить вывод в новый файл, который я открываю. Для каждого текстового файла я открываю новую книгу, и данные отправляются в эту новую книгу. Это перенос данных в новую книгу, но он берет исходные данные из текстового файла и отправляет их в первую строку сразу после правильно импортированных данных, и я немного зациклен на том, почему он это делает. Я мог бы просто вручную удалить строку, но я хочу определить, почему это происходит, чтобы очистить процесс. – DuctTapeCoder
Ваш код открывает текстовый файл _as 'Workbook'_, который совпадает с' File-> Open'. Исходные данные есть, потому что ** он был там, когда вы начали **. Если вам действительно нужна ** новая ** «Книга», вам нужно явно создать ее с помощью «Set wkb = Workbooks.Add» вместо текущей строки. Нет необходимости «открывать» текстовый файл, если вы хотите создать для него подключение к данным; 'Connection' обрабатывает все это. –