Макрос для объединения данных из файлов .dbf в один файл, Присылают с почты до 100 файлов в формате .dbf - их нужно объединить в один файл Excel для дальнейшей обработки
Здравствуйте форумчане и гости. В VBA даже близко не понимаю. Помогите макросом для упрощения рутинной работы по объединению данных в одном файле. Прилагаю файлы. В файле 202506.xlsx как должно получится. В архиве TEST.zip пример файлов для обработки.
Sub ImportDBF()
Dim wb As Workbook, new_wb As Workbook
Dim filePath As String, fileName As String
Dim copy_rng As Range, rng As Range
Dim bNewOpen As Boolean
bNewOpen = False
Application.ScreenUpdating = False
Set new_wb = Workbooks.Add 'создание новой книги
Set copy_rng = new_wb.Sheets(1).Range("A1")
filePath = "C:\Users\User\Desktop\1" ' < Укажите путь к папке
fileName = Dir(filePath & "\*.dbf")
' Открытие DBF в Excel как отдельной книги в цикле
Do Until fileName = ""
Set wb = Workbooks.Open(filePath & "\" & fileName)
' Копирование содержимого на лист
If bNewOpen Then
Set rng = wb.Sheets(1).UsedRange
rng.Offset(1).Resize(rng.Rows.Count - 1).Copy Destination:=copy_rng
Else
Set rng = wb.Sheets(1).UsedRange
rng.Copy Destination:=copy_rng
bNewOpen = True
End If
' Закрытие книги DBF без сохранения
wb.Close False
fileName = Dir()
Set copy_rng = new_wb.Sheets(1).UsedRange
Set copy_rng = new_wb.Sheets(1).Cells(copy_rng.Rows.Count + 1, "A")
Loop
Application.ScreenUpdating = True
End Sub
Alex написал: filePath = "C:\Users\User\Desktop\1" ' < Укажите путь к папке
Файл для сбора данных всегда будет находится с файлами .dbf в одном каталоге. Подскажите пожалуйста, как изменить. UPD: Нарисовалась ещё одна задача (весь год было нормально и только сейчас заметили). В третьем столбце все цифры нужно поделить на 100. Так есть Так нужно:
Muxa K, тогда есть вопросы: 1. как файлы будут добавляться в папку? К примеру, на сегодня есть 5 файлов. Мы их обработали и добавили в файл для сбора. Что с ними дальше происходит? Удаляются или остаются? Завтра пришли еще 3 файла. В файле сборки мы собираем только новые файлы или сбор всех 8 файлов заново?
Muxa K, не до конца понял, что будет файлом сбора в следующих месяцах, данные прошлых периодов удаляются или остаются? Если будете удалять, то удаляйте без строки заголовков, если данные остаются, тогда ничего делать не нужно. Во вложении.
Alex написал: данные прошлых периодов удаляются или остаются?
Не совсем понял, что нужно. При запуске макроса нужно всё, что ниже "шапки" таблицы затирать. Я создаю каталог (например) Июнь. Туда скидываю DBF файлы. После этого тута же копирую Ваш файл для сбора. Собираю всё в один файл и отдаю его в абонентский отдел для сверки по базе. Всё. Через месяц опять создаю каталог (например) Июль. и т.д. Сейчас буду пробовать.
написал: После этого тута же копирую Ваш файл для сбора.
Ну вот смотрите, Вы обработали данные прошлого месяца, т.е. в нем уже есть данные. Вы его скопировали в новый каталог, какие дальше действия с данными, которыми уже есть в этом файле? удаляете их или они остаются и просто добавляются новые данные текущего месяца в конец таблицы?
Alex, огромное спасибо! Очень выручили. Всё собирается идеально. Подгрузка видимо идёт по имени файла и при обработке всех файлов за месяц некоторые даты не по порядку.
Это не критично, но если будет у Вас желание, - то было бы классно в последнем столбце отсортировать по дате Ещё раз огромное Вам спасибо за помощь.
Что-то я делаю не так. Файл после заполнения приложил.
И подскажите пожалуйста - можно, как-то задать диапазон очистки на листе A2:J1000 Хочу для удобства девочкам сделать формулы в столбцах K:M Им после этого и делать ничего не придётся.