Хотите создать сценарий VBA, чтобы объединить несколько файлов в папке, в единый лист файла 1. Все файлы будут иметь одинаковые заголовки, поэтому заголовки следует импортировать только из первого файла.
Обратите внимание:
- Заголовки всегда будут в первой строке (должны быть только импортируется из первого файла)
- Каждый файл содержит 1 рабочий лист
- Каждый файл может иметь переменное число строк после строки заголовка
- Конечным результатом должны быть все файлы, объединенные в один файл листа с 1 строкой заголовка.
Вот что у меня есть до сих пор:
Sub combineFiles()
'takes contents of files and puts into individual sheets
Dim FolderPath As String
Dim Filename As String
Dim Sheet As Worksheet
Application.ScreenUpdating = False
'FolderPath = Environ("userprofile") & "\Desktop\Test\"
FolderPath = Application.ActiveWorkbook.Path & "\"
Filename = Dir(FolderPath & "*.xls")
Do While Filename <> ""
Workbooks.Open Filename:=FolderPath & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop
Application.ScreenUpdating = True
' combine sheets created by above script
Dim J As Integer
On Error Resume Next
Sheets(1).Select
Worksheets.Add ' add a sheet in first place
Sheets(1).Name = "Combined"
Sheets(2).Activate
Range("A1").EntireRow.Select
Selection.Copy Destination:=Sheets(1).Range("A1")
For J = 2 To Sheets.Count ' from sheet 2 to last sheet
Sheets(J).Activate ' make the sheet active
Range("A1").Select
Selection.CurrentRegion.Select ' select all cells in this sheets
Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select
Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2)
Next
End Sub
Это позволило мне получить все файлы в 1. Однако, похоже, он это делает случайное число раз, поэтому, если у меня есть 2 файла, его объединяют в текущий файл (в виде отдельных листов) по 2/3/4 раза каждый. Второй раздел кода вообще не запускается, который должен был объединить разные листы.
Если кто-то может помочь найти более элегантный (и работающий) способ объединения этих файлов, он будет очень признателен.