Импорт из текстовых файлов в Excel

Я пытаюсь написать макрос VBA, который предложит пользователю выбрать каталог сразу после его запуска.

Как только пользователь выбирает каталог, макрос сканирует все файлы *.txt в нем и помещает каждое его содержимое в новую строку под столбцом G Таким образом, содержимое 1-го текстового файла будет в G2 , втором текстовом файле в G3 и так далее.

Я долго просматривал StackOverFlow и нашел рабочий код

 Function GetFolder() As String Dim fldr As FileDialog Dim sItem As String Set fldr = Application.FileDialog(msoFileDialogFolderPicker) With fldr .Title = "Select a Folder" .AllowMultiSelect = False .InitialFileName = Application.DefaultFilePath If .Show <> -1 Then GoTo NextCode sItem = .SelectedItems(1) End With NextCode: GetFolder = sItem Set fldr = Nothing End Function 

Я также сделал очень плохое жесткое кодирование для импорта только одного текстового файла в ячейку G2

 With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;D:\K\record001_001.txt" _ , Destination:=Range("$G$2")) .Name = "record001_001" .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 = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With 

Я не знаю, как собрать эти штуки вместе с рабочим кодом.

  1. Прочтите все файлы txt внутри выбранного мной каталога.
  2. Поместите каждое содержимое текстовых файлов в новую строку того же листа ( G2 , G3 и т. Д.).

Каждый из этих текстовых файлов имеет только одну или две строки данных и не хочет, чтобы там что-то было выделено. Просто скопируйте всю массу текста в txt файл и вставьте его в G2 в цикле до тех пор, пока все txt файлы в выбранном каталоге не будут выполнены.

  1. Чтобы прочитать все файлы txt внутри каталога или выбрать один файл

Следующий код должен позволить вам выбрать один или несколько файлов, которые вы хотите импортировать

Свойство Application.FileDialog (Excel)

  '// Open Dailog With Application.FileDialog(msoFileDialogOpen) .AllowMultiSelect = True <-- Allow multiple selection .Show '<-- display the files End With 
  1. Чтобы установить номер строки для данных, начинающихся с G2, затем следующий

Если необходимо обновить следующий код

 nRow = Range("G2").End(xlUp).Offset(1, 0).row Destination:=Range("$G$" & nRow)) 

См. Полный КОД с комментариями

 Sub Import() '// Declare a variable as Dim nRow As Long Dim sExtension As String Dim oFolder As FileDialog '// FileDialog object Dim vSelectedItem As Variant '// Stop Screen Flickering Application.ScreenUpdating = False '// Create a FileDialog object as a File Picker dialog box Set oFolder = Application.FileDialog(msoFileDialogOpen) '// Use a With...End With block to reference FileDialog. With oFolder '// Allow multiple selection. .AllowMultiSelect = True '// Use the Show method to display the files. If .Show = -1 Then '// Extension sExtension = Dir("*.txt") '// Step through each SelectedItems For Each vSelectedItem In .SelectedItems '// Sets Row Number for Data to Begin nRow = Range("G2").End(xlUp).Offset(1, 0).row '// Below is importing a text file With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;" & sExtension, Destination:=Range("$G$" & nRow)) .Name = sExtension .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 850 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = True .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = True .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = True .TextFileOtherDelimiter = "=" .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With sExtension = Dir Next '// If Cancel... Else End If End With Application.ScreenUpdating = True '// Set object to Nothing. Object? see Link Object Set oFolder = Nothing End Sub 

Установить объект = ничего

Interesting Posts

Найти ячейку текста, которая соответствует массиву с подстановочными знаками

Проверьте один столбец, чтобы увидеть, содержит ли оно значение из другого столбца и выделяет дубликаты

VBA Excel сопоставить 2 столбца по A с 2 столбцами на B и возвращаемым значением

максимальное количество ребер в NodeXl

Как сортировать сортировку по нескольким столбцам?

Изменение размера строки таблицы в другой размер строки таблицы

Лучший способ связать два листа в excelba

Сравните два столбца на разных файлах excel

Вставьте строки после того, как каждая новая ссылка появится в столбце

Форматирование даты Excel заменяет «.» На «/»

Сохранить как PDF и Excel 2016 Копировать в папку и имя файла, созданные из значения ячейки

Импорт таблиц слов в excel с форматированием

Есть ли способ запустить R в Excel?

Как обрабатывать более 255 символов в ячейке в Excel?

Yii импортирует данные из файла excel

Давайте будем гением компьютера.