Объединение листов из нескольких рабочих книг в один лист - PullRequest
1 голос
/ 04 апреля 2019

У меня много отличных листов с разными форматами.Есть ли плагин для объединения всех листов в «объединенный» лист в целевом файле?

Но следующий код не может быть объединен в 1 лист

Sub GopFileExcel()
Dim FilesToOpen
Dim x As Integer
On Error GoTo ErrHandler
Application.ScreenUpdating = False
FilesToOpen = Application.GetOpenFilename _
(FileFilter:="hMicrosoft Excel Files (*.xlsx), *.xlsx", 
MultiSelect:=True, Title:="Files to Merg")
If TypeName(FilesToOpen) = “Boolean” Then
MsgBox "No Files were selected"
GoTo ExitHandler
End If
x = 1
While x <= UBound(FilesToOpen)
Workbooks.Open Filename:=FilesToOpen(x)
Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
x = x + 1
Wend
ExitHandler:
Application.ScreenUpdating = True
Exit Sub
ErrHandler:
MsgBox Err.Description
Resume ExitHandler
End Sub

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

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

Dim ws As Worksheets
Dim lastcol As Integer

For Each ws In Worksheets
   ThisWorkbook.Worksheets(ws).Column(copyrange).Copy
   lastcol = Worksheets(targetsheet).Cells(1, Columns.Count).End(xlToLeft).Column + 1
   ThisWorkbook.Worksheets(targetsheet).Cells(1, lastcol).PasteSpecial
 Paste:=xlPasteValues, operation:=xlNone
Next
0 голосов
/ 04 апреля 2019

Первое, что нужно сделать, это собрать все листы в одну рабочую книгу. Вот код, который может помочь с этим.

Sub GetSheets()

Path = "C:\Users\USERNAME\Downloads\Test\" 'File path will all your separate files

Filename = Dir(Path & "*.xls")
    Do While Filename <> ""
        Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
        For Each Sheet In ActiveWorkbook.Sheets
            Sheet.Copy After:=ThisWorkbook.Sheets(1)
        Next Sheet
        Workbooks(Filename).Close
        Filename = Dir()
    Loop

End Sub

Тогда вы могли бы написать цикл, чтобы пройти по всем листам и переместить данные в один лист.

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