Импорт нескольких файлов в одну книгу

Допустим, у вас есть папка на жестком диске, содержащая тридцать текстовых файлов, и вы хотите импортировать их все в книгу Excel. Вы хотите, чтобы каждый текстовый файл находился на отдельном листе в книге, чтобы у вас было всего тридцать листов.

Один из способов сделать это – вручную добавить нужные листы и затем индивидуально импортируйте каждый из текстовых файлов. Как вы понимаете, это быстро надоест. Гораздо лучшим решением является использование макроса для импорта, например следующего.

Sub CombineTextFiles () Dim FilesToOpen Dim x As Integer Dim wkbAll As Workbook Dim wkbTemp As Workbook Dim sDelimiter As Строка при ошибке Перейти к ErrHandler Application.ScreenUpdating = False sDelimiter = «|» FilesToOpen = Application.GetOpenFilename _ (FileFilter: = «Текстовые файлы (* .txt), * .txt», _ MultiSelect: = True, Title: = «Текстовые файлы для открытия») Если TypeName (FilesToOpen) = «Boolean» Тогда MsgBox «Файлы не были выбраны» Перейти к ExitHandler End If x = 1 Установить wkbTemp = Workbooks.Open (FileName: = FilesToOpen (x)) wkbTemp.Sheets (1) .Copy Set wkbAll = ActiveWorkbook wkbTemp.Close (False) wkbAets (x) .Columns («A: A»). TextToColumns _ Destination: = Range («A1»), DataType: = xlDelimited, _ TextQualifier: = xlDoubleQuote, _ ConsecutiveDelimiter: = False, _ Tab: = False, точка с запятой: = False, _ Comma: = False, Space: = False, _ Other: = True, OtherChar: = «|» x = x + 1 Пока x

Этот макрос позволяет вам выбрать, какие файлы вы хотите импортировать, а затем помещает данные из этих файлов на отдельные рабочие листы в книге. Макрос предполагает, что импортируемые данные используют вертикальную черту (|) в качестве разделителя между полями.

Если вы знаете, что файлы для импорта всегда находятся в определенной папке и что вы хотите чтобы импортировать все файлы в этой папке, вы можете немного упростить макрос. В следующем примере предполагается, что файлы находятся в папке c: temp load_excel, но вы можете изменить имя этой папки, просто изменив переменную fpath в коде макроса..

Sub LoadPipeDelimitedFiles () Dim idx As Integer Dim fpath As String Dim fname As String idx = 0 fpath = «c: temp load_excel » fname = Dir (fpath & «* .txt» ) Пока (Len (fname)> 0) idx = idx + 1 Sheets («Sheet» & idx). Выберите With ActiveSheet.QueryTables.Add (Connection: = «TEXT;» _ & fpath & fname, Destination: = Range ( «A1»)) .Name = «a» & idx .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePasswordustata =. RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 437 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileOtherDelimiter = «|» .TextFileColumnDataTypes = Массив (1, 1, 1) .TextFileTrailingMinusNumbers = True. Обновить BackgroundQuery: = False fname = Dir End With WendEnd Sub

Источник: frestage.ru

Бытовой вопрос