Как объединить несколько текстовых файлов в один?
Что умеет Excel
В общем-то проблема не такая распространенная, как сбор данных из нескольких файлов/листов в Excel, но все же. Решил вот написать, как просто и быстро можно из множества текстовых файлов собрать информацию в один новый текстовый файл. Притом это не потребует от Вас никаких усилий, кроме как нажатия кнопочки и выбора нужных файлов. Ну и скачивания файла с этой странички. Или ручной вставки кода в свою книгу. Собственно, сам код:
Sub Get_All_TXT_Text() Dim avFiles, li As Long avFiles = Application.GetOpenFilename("TXT Files(*.txt),*.txt", , , , True) If VarType(avFiles) = vbBoolean Then Exit Sub Dim objFSO As Object, objTxtFile As Object, sTxt, sAllTxt Set objFSO = CreateObject("Scripting.FileSystemObject") For li = LBound(avFiles) To UBound(avFiles) Set objTxtFile = objFSO.OpenTextFile(avFiles(li), 1) sTxt = objTxtFile.ReadAll sAllTxt = sAllTxt & vbNewLine & sTxt objTxtFile.Close Next li Set objTxtFile = objFSO.CreateTextFile("C:/AllText.txt", True) objTxtFile.WriteLine sAllTxt objTxtFile.Close Set objTxtFile = Nothing: Set objFSO = Nothing End Sub
Sub Get_All_TXT_Text()
Dim avFiles, li As Long
avFiles = Application.GetOpenFilename("TXT Files(*.txt),*.txt", , , , True)
If VarType(avFiles) = vbBoolean Then Exit Sub
Dim objFSO As Object, objTxtFile As Object, sTxt, sAllTxt
Set objFSO = CreateObject("Scripting.FileSystemObject")
For li = LBound(avFiles) To UBound(avFiles)
Set objTxtFile = objFSO.OpenTextFile(avFiles(li), 1)
sTxt = objTxtFile.ReadAll
sAllTxt = sAllTxt & vbNewLine & sTxt
objTxtFile.Close
Next li
Set objTxtFile = objFSO.CreateTextFile("C:/AllText.txt", True)
objTxtFile.WriteLine sAllTxt
objTxtFile.Close
Set objTxtFile = Nothing: Set objFSO = Nothing
End SubВот и все. Теперь этот код необходимо вставить в стандартный модуль и…Пользоваться!
После работы кода на диске «С» будет создан файл «AllText.txt», в котором и будут содержаться данные всех выбранных файлов.
Tips_Macro_Get_All_TXT_Text.xls (37,5 KiB, 1 107 скачиваний)
Так же см.:
Сбор данных с нескольких листов/книг
Как собрать данные с нескольких листов или книг?

5050

Вот на этой строке все валится:
sTxt = objTxtFile.ReadAll (отмечена была в дебаггере)
Ошибка такая: Runtime error 62 Input past end of file
P.s. У меня файлы на китайском, и их имена тоже.
Скорее всего проблема именно в языке. Программа неверно определяет конец файла. Вышлите мне пару своих файлов для экспериментов и поиска решения.
Здравствуйте.
Скачала пример. Нажимаю на кнопочку «Объединить текстовые файлы» открывается окошко с просьбой указать нужные файлы, но когда я указываю на нужные мне документы, ничего не происходит. Окошко просто закрывается, а на экране пустой лист Как быть?
Зайти на диск «С» и найти там текстовый файл «AllText.txt». Это и есть файл, в котором собрана вся информация с выбранных файлов.
Добрый день! У меня файлы формата log. Видимо из за этого возникает ошибка на строке (в третьей строке расширение заменил на log):
Set objTxtFile = objFSO.CreateTextFile("C:/AllText.txt", True)В чем может быть проблема?
Проблема очевидна. От того, что Вы меняете расширение в строке кода не меняется сама команда — она создает ТОЛЬКО ТЕКСТОВЫЕ ФАЙЛЫ. Чтобы код работал с log файлами меняйте расширение у них.
Спасибо большое. Нашел как массово переименовывать файлы. Через Total Commander выделением нужных файлов и CTRL-M
Я хотел открыть не только файлы .txt, но и .docx. А потом все записать в .docx. Я изменил:
avFiles = Application.GetOpenFilename("TXT Files(*.txt; *.docx),*.txt; *.docx", , , , True)но ничего не получилось.
И не получится. docx не является разновидностью текстового файла, поэтому к нему не применимы методы, используемые в данном коде. log — является разновидностью текстовых файлов и открывается в текстовом редакторе. Именно поэтому с этим типом файлов данный метод сработал.
А что можно делать с docx?
А что можно сделать с docx? Мне нужно объединить файлы docx в один docx.
Иван, статья про текстовые файлы. Документы Word к ним совершенно не относятся и код будет совершенно иным.
Так что не надо закидывать тему своими однотипными комментариями с указанием своих пожеланий. Для подобных вопросов есть форум — задайте свой вопрос там.
Здравствуйте Дмитрий!
Макрос отлично работает. Но хотелось бы чтоб все файлы объеденились со второй строки т.е. без шапки.
Для этого проще открывать текстовые файлы через Excel, а собирать с помощью кода из этой статьи:
Текстовые можно проще собрать — пишем bat или cmd файл с примерно таким текстом (возможны варианты):
@echo off
copy /b *.txt C:\temp\all.txt
Все txt из папки с этим командным файлом будут слиты в один файл. Если этот bat/cmd выполнить конечно…
Доброго времени суток!
Скачал файл, поменял расширение в фильтре и в расширении файла all на csv. Все работает, но только до того момента, пока li не становится равной 76. потом по строке sTXT = objTxtFile.ReadAll выходит ошибка 62. Файлов всего подцеплялось 193. Что может быть? Меньшее количество файлов обрабатывает нормально без вопросов