Еще одна старенькая заготовка, полезная в офисе
Различные программы очень часто выгружают множество выгрузок, представляющих таблицу в Эксель с заголовком в первой строке, и надо данные из них собрать в один файл.
Типичный случай - собрать логи, которые ежедневно падают в папку отдельным файлом, и проанализировать их за год. Из 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
Как установить макрос в Эксель видео (не мое)