VBA - объединить несколько файлов в один лист - PullRequest
0 голосов
/ 28 января 2020

Хотите создать сценарий 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 раза каждый. Второй раздел кода вообще не запускается, который должен был объединить разные листы.

Если кто-то может помочь найти более элегантный (и работающий) способ объединения этих файлов, он будет очень признателен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...