Найти тему

Макрос, собирающий несколько файлов в один

Еще одна старенькая заготовка, полезная в офисе

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

Типичный случай - собрать логи, которые ежедневно падают в папку отдельным файлом, и проанализировать их за год. Из 365 одинаковых по форме файлов надо сделать один. Садится человек - и пошло-поехало, открыть, копипаст, закрыть, открыть, копипаст, закрыть. А человечек-то не железный, тут перепутал, тут пропустил, тут дважды скопировал.

Макрос ниже как раз является инструментом, чтобы сделать это и быстро. и без ручного труда, и ничего при этом не пропустить.

Единственный нюанс - это то, что он работает с файлами с заголовком. Заголовок берется из первого файла.

Единственный нюанс - это то, что он работает с файлами с заголовком. Заголовок берется из первого файла

Sub collect_in_one()

Dim source() As Variant

source = Application.GetOpenFilename(, , "Выберите файлы для слияния в один список", , True)

Dim x

Dim QTY As Long

Workbooks.Add

Dim a As String

a = ActiveWorkbook.Name

Dim counter As Integer

counter = 0

Dim B As String

Application.DisplayAlerts = False

For Each x In source

counter = counter + 1

Workbooks.Open Filename:=x

B = ActiveWorkbook.Name

Select Case counter

Case Is = 1

QTY = ActiveSheet.UsedRange.Rows.count

Rows(1).Resize(QTY).Select

Selection.Copy

Workbooks(a).Activate

Cells(1, 1).Activate

ActiveSheet.Paste

Case Is > 1

QTY = ActiveSheet.UsedRange.Rows.count

Rows(2).Resize(QTY).Select

Selection.Copy

Workbooks(a).Activate

Rows(ActiveSheet.UsedRange.Rows.count + 1).Select

ActiveSheet.Paste

End Select

Workbooks(B).Close

Next x

End Sub

Как установить макрос в Эксель видео (не мое)