
В Excel несложно открывать небольшие CSV-файлы, но часто возникают ситуации, когда однотипных файлов очень много, и нужно их объединить в один файл.
Глобально есть множество способов объединить CSV-файлы в один, но с помощью Excel их не так много.
Рассмотрим основные.
Объединить данные из CSV с Power Query
Фактически это не способ объединения файлов. Это способ объединения данных в них. Т.к. итоговый файл уже не CSV, а Excel-таблица с динамическим запросом. Тем не менее, данные действительно объединяются в один файл, что зачастую является конечной задачей (но не всегда).
- Соберите все CSV в одну папку. По возможности одинаковая структура столбцов и кодировка (UTF-8).
- В Excel откройте пустую книгу → Данные → Получить данные → Из файла → Из папки.
- Выберите папку с CSV → Преобразовать данные.
- В окне Power Query нажмите Объединить файлы (Combine) → выберите Пример файла (Sample file), отметьте Разделитель (запятая/точка с запятой) и Строка заголовков.
- Power Query создаст запросы: Transform Sample File, Example File и основной запрос с объединением. Проверьте типы данных столбцов, при необходимости измените.
- Нажмите Главная → Закрыть и загрузить (Close & Load) → выберите место выгрузки (лист/модель).
Добавляйте новые CSV в ту же папку и нажимайте Данные → Обновить все. Никаких ручных операций больше не нужно.
VBA-макрос (склеить все CSV из папки в один файл)
Эта процедура действительно даёт возможность объединить несколько CSV файлов в один. При запуске диалоговое окно попросит вас указать папку с файлами. Алгоритм крайне простой – объединяются все файлы с расширением CSV в папке. Название итогового файла – “!Объединённый_CSV”.
Вот готовый для копирования и вставки код (жмите на кнопку “Копировать”):
Sub Объединить_CSV()
Dim fp As String, fn As String, df As String
Dim ds As Long, ss As Long
Dim ln As String, fd As FileDialog
Dim fl As String, fc As Long
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
Select Case fd.Show
Case -1: fp = fd.SelectedItems(1) & "\"
Case Else: Exit Sub
End Select
df = fp & "!Объединённый_CSV.csv"
ds = FreeFile
Open df For Output As #ds
fn = Dir(fp & "*.csv")
fl = ""
fc = 0
Do While fn <> ""
If fn <> "!Объединённый_CSV.csv" Then
ss = FreeFile
Open fp & fn For Input As #ss
Do While Not EOF(ss)
Line Input #ss, ln
Print #ds, ln
Loop
Close #ss
fl = fl & fn & vbCrLf
fc = fc + 1
End If
fn = Dir
Loop
Close #ds
MsgBox "Файлов объединено: " & fc & vbCrLf & fl, vbInformation
End Sub
Создайте в книге модуль, вставьте в него код и выполните. Если хотите сохранить код на будущее, придется сохранить файл в формате xlsm или xlsb. Можно также сохранить его в личную книгу макросов, это более удобный вариант.
Полагаю, несложно будет модифицировать код, чтобы объединить TSV или TXT файлы похожим макросом.
Объединить CSV в 2 клика с !SEMTools
Для тех, кто ценит время, будет полезно установить надстройку !SEMTools, ведь объединение CSV в ней уже много лет доступно бесплатно! Инструмент находится на панели !SEMTools в группе процедур “Разбить/Сцепить” (следующая после “Извлечь“).

Доступна во всех версиях надстройки – Lite и Pro. Покупать продукт не нужно. Вот так работает:

В надстройке немало и других бесплатных инструментов. Но если вам часто приходится работать с текстовыми данными, рекомендую ознакомиться со всеми её возможностями на этом сайте.
Нужно регулярно объединять десятки CSV и обрабатывать текстовые данные? Установите надстройку !SEMTools и избавьтесь от рутины. Поиск, удаление, изменение и удаление данных – пара кликов!