Объединить листы из множества файлов в 1

Автор Gkar2009, 9 марта 2020, 14:07

0 Пользователи и 1 гость просматривают эту тему.

Gkar2009

Здравствуйте! Есть необходимость объединить данные из большого количества разных файлов .xls в один. При этом данные из каждого файла должны быть скопированы в этот файл на отдельные листы. Нашел рабочий макрос в Excel:

Открываем книгу, куда хотим собрать листы из других файлов, входим в редактор Visual Basic (ALT+F11), добавляем новый пустой модуль (в меню Insert - Module) и копируем туда текст вот такого макроса:

Sub CombineWorkbooks()
Dim FilesToOpen
Dim x As Integer

Application.ScreenUpdating = False 'отключаем обновление экрана для скорости

'вызываем диалог выбора файлов для импорта
FilesToOpen = Application.GetOpenFilename _
(FileFilter:="All files (*.*), *.*", _
MultiSelect:=True, Title:="Files to Merge")

If TypeName(FilesToOpen) = "Boolean" Then
MsgBox "Не выбрано ни одного файла!"
Exit Sub
End If

'проходим по всем выбранным файлам
x = 1
While x <= UBound(FilesToOpen)
Set importWB = Workbooks.Open(Filename:=FilesToOpen(x))
Sheets().Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
importWB.Close savechanges:=False
x = x + 1
Wend

Application.ScreenUpdating = True
End Sub

После этого можно вернуться в Excel и запустить созданный макрос через меню Сервис - Макрос - Макросы (Tools - Macro - Macros) или нажав ALT+F8. Отобразится диалоговое окно открытия файла, где необходимо указать один или несколько (удерживая CTRL или SHIFT) файлов, листы из которых надо добавить к текущей книге.

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