Сборка листов из разных книг в одну
Предположим, имеется куча книг Excel, все листы из которых надо объединить в один файл. Копировать руками долго и мучительно, поэтому имеет смысл использовать несложный макрос. Открываем книгу, куда хотим собрать листы из других файлов, входим в редактор Visual Basic сочетанием клавиш Alt + F11 одноименной кнопкой на вкладке Разработчик (Developer — Visual Basic) , добавляем новый пустой модуль (в меню 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После этого можно вернуться в Excel и запустить созданный макрос на вкладке Разработчик кнопкой Макросы (Developer - Macros) или нажав Alt + F8 . Отобразится диалоговое окно открытия файла, где необходимо указать один или несколько (удерживая Ctrl или Shift ) файлов, листы из которых надо добавить к текущей книге - и задача решена!
Ссылки по теме
- Что такое макросы, куда вставлять код макроса на Visual Basic
- Автоматическая сборка заданных листов из заданных книг с помощью надстройки PLEX
- Автоматическая сборка данных с нескольких листов на один итоговый лист с помощью надстройки PLEX
Пока правда других способов не знаю.
Спасибо. 07.10.2012 13:29:50 Спасибо. Макрос - ОГОНЬ! Полезная штука!. 07.10.2012 13:32:01
Да, согласен, макрос очень даже неплох, но из Personal работать отказывается. Прична, как мне кажется, в том что Personal некоторые команды не воспринимает, или воспринимает как то иначе. например ThisWorkbook. Я переделал макрос, теперь работает и из Personal без проблем. получилось следующее:
Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer Dim wbk As Workbook Dim wbk2 As Workbook On Error GoTo ErrHandler Set wbk = ActiveWorkbook Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "No files!" GoTo ExitHandler End If x = 1 While x01.06.2016 07:29:59
Разрешите обратиться!
У меня при копировании листов с книг разных версий екселя работает только Ваш макрос, однако когда я хочу скопировать только первый лист с разных книг, я указал следующий код:wbk2.Sheets(1).Move After:=wbk.Sheets(wbk.Sheets.Count)
При этом макрос сработал, все первые листы были успешно скопированы, но появился побочный эффект:
открываются все книги, из которых эти листы копировались.
Вопрос: можно ли изменить код таким образом, чтобы всё работало по прежней схеме, но при этом куча книг не открывалась и я указывал номер листа какой хочу?
28.10.2020 20:06:14
У меня почему-то после запуска макроса появляется проводник, в котором можно выбрать только файлы xls
поменял девятую строку из макроса в оригинальном посте - файлы появились, работает(FileFilter:="All files (*.*), *.*", _07.10.2012 13:35:48
Вот рабочий макрос, собирает любое количество листов. этот макрос работает и из Personal. Пользуйтесь, люди .
Sub Сбор_листов_в_один_файл() Const strStartDir = "c:\test" 'папка, с которой начать обзор файлов Const strSaveDir = "c:\test\result" 'папка, в которую будет предложено сохранить результат Dim wbTarget As New Workbook, wbSrc As Workbook, shSrc As Worksheet, shTarget As Worksheet, arFiles, _ i As Integer, stbar As Boolean On Error Resume Next 'если указанный путь не существует, обзор начнется с пути по умолчанию ChDir strStartDir On Error GoTo 0 With Application 'меньше писанины arFiles = .GetOpenFilename("Excel Files (*.xls), *.xls", , "Объединить файлы", , True) If Not IsArray(arFiles) Then End 'если не выбрано ни одного файла Set wbTarget = Workbooks.Add(template:=xlWorksheet) .ScreenUpdating = False stbar = .DisplayStatusBar .DisplayStatusBar = True .DisplayAlerts = False For i = 1 To UBound(arFiles) .StatusBar = "Обработка файла " & i & " из " & UBound(arFiles) Set wbSrc = Workbooks.Open(arFiles(i), ReadOnly:=True) For Each shSrc In wbSrc.Worksheets If IsNull(shSrc.UsedRange.Text) Then 'лист не пустой Set shTarget = wbTarget.Sheets.Add(after:=wbTarget.Sheets(wbTarget.Sheets.Count)) shTarget.Name = shSrc.Name & "-" & i shSrc.Cells.Copy shTarget.Range("A1") End If Next wbSrc.Close False 'закрыть без запроса на сохранение Next .ScreenUpdating = True .DisplayStatusBar = stbar .StatusBar = False If wbTarget.Sheets.Count = 1 Then 'не добавлено ни одного листа MsgBox "В указанных книгах нет непустых листов, сохранять нечего!" wbTarget.Close False End Else .DisplayAlerts = False wbTarget.Sheets(1).Delete .DisplayAlerts = True End If On Error Resume Next 'если указанный путь не существует и его не удается создать, 'обзор начнется с последней использованной папки If Dir(strSaveDir, vbDirectory) = Empty Then MkDir strSaveDir ChDir strSaveDir On Error GoTo 0 arFiles = .GetSaveAsFilename("Результат", "Excel Files (*.xls), *.xls", , "Сохранить объединенную книгу") If VarType(arFiles) = vbBoolean Then 'если не выбрано имя GoTo save_err Else On Error GoTo save_err wbTarget.SaveAs arFiles End If End save_err: MsgBox "Книга не сохранена!", vbCritical End With End SubКак собрать данные из разных файлов excel в один
Объединение таблиц из нескольких файлов
Для того, чтобы объединить и просуммировать данные из таблиц, расположенных в отдельных файлах, можно воспользоваться консолидацией данных. Для этого:
В каждом файле задаем имя диапазонов для наших таблиц. Для этого выделяем всю таблицу и в строке адресов пишем уникальное имя диапазона (Продажи2012) без пробелов (или с нижним подчеркиванием). Выполняем это для всех наших таблиц.
В отдельном файле, в котором будем выполнять объединение, выбрав ячейку, переходим на вкладку «Данные» и нажимаем на кнопку «Консолидация»
В строке «ССЫЛКА» сдвигаемся вправо мышью на конец ссылки, выделяя последние элементы (применять стрелки нельзя) и нажимаем на кнопку выбора диапазона.
В окне после «!» дописываем имя диапазона, из которого будут браться данные так, как присвоили в исходном файле (Продажи2012)
Повторяем для всех остальных файлов те же самые действия и нажимаем «ОК». Поставив все галки ниже в окне, в том числе «Создавать связи с исходными данными» - консолидированная таблица будет зависеть от параметров в исходных данных.Если материал Вам понравился или даже пригодился, Вы можете поблагодарить автора, переведя определенную сумму по кнопке ниже:
Как объединить файлы Excel в один
Часто при работе в табличном редакторе происходит так, что необходимая информация располагается на отдельных рабочих листах или же файлах. Перед пользователями встает задача объединения нескольких листов и файлов в единое целое. Можно, конечно, путем копирования ячеек из одного документа и вставки их в другой файл реализовать процедуру объединения, но это неудобно и неэффективно. В статье мы детально рассмотрим несколько эффективных методов, позволяющих реализовать объединение табличных документов в один.
Объединение рабочих листов в один в табличном редакторе
Первоначально рассмотрим такую процедуру, как объединение рабочих листов в один документ. Подробная инструкция выглядит так:
- Производим открытие рабочих листов, которые мы планируем объединить в один файл.
- Передвигаемся в подраздел, имеющий наименование «Главная». Здесь в блоке команд «Формат» находим элемент под наименованием «Переместить или скопировать лист» и жмем по нему левой клавишей мышки.
- В раскрывшемся перечне жмем левой клавишей мышки на кнопку «(новая книга)».
- После реализации всех действий жмем на «ОК».
- Аналогичные операции необходимо произвести с остальными листами табличного документа.
Объединение информации в один файл
Часто возникают такие ситуации, когда необходимо произвести объединение некоторых фрагментов информации в единый файл. Эта процедура выполняется достаточно легко при помощи инструментов табличного редактора. Самое главное – информация, расположенная в табличках, должна быть заранее отформатирована, чтобы в дальнейшем не тратить огромное количество времени на приведение общей таблички к нормальному внешнему виду. Подробная инструкция выглядит так:
- К примеру, у нас есть следующие данные, которые необходимо перенести в один файл. Процесс объединения будет правильно работать только при соблюдении нескольких определенных моментов. Рабочие листики, которые будут проходить процедуру консолидации, должны быть приведены к единому форматированию с идентичными заголовками и форматами информации. Ко всему прочему, объединяемая информация не должна содержать в себе незаполненных строчек и колонок.
- После того как мы произведем приведение информации из разных рабочих областей к единому форматированию, нам необходимо реализовать создание нового рабочего листа. Сделать это можно путем нажатия левой клавиши мышки на небольшой плюсик темного цвета, расположенный в нижней части интерфейса табличного редактора рядом со вкладками других листов.
На заметку! Процедуру объединения можно реализовать и на той области, на которой уже находится нужная информация, но так можно запутаться из-за большого количества исходных данных.
- На следующем этапе мы передвигаемся в раздел, имеющий наименование «Данные». Найти его можно сверху, в основном меню табличного редактора. Здесь мы находим элемент, имеющий название «Консолидация», и жмем по нему левой клавишей мышки.
- В отобразившемся перечне жмем левой клавишей мышки по элементы «Сумма». Далее вводим координаты ячеек, которые мы планируем объединить.
- Аналогичные действия мы производим и с другой информацией, которую мы планируем объединить в один файл.
- После проведения всех необходимых действий жмем на «ОК», чтобы подтвердить внесенные изменения.
Важно! Этот метод плохо работает с информацией текстового вида. Для более качественного объединения данных в один файл следует воспользоваться следующим методом, подразумевающим использование макросов.
Объединение файлов при помощи VBA
Макросы, прописываемые в VBA, превосходно подходят для реализации процедуры объединения нескольких табличных документов в единый файл. Процедура не такая сложная, как кажется на первый взгляд. Главное – следовать пунктам подробной инструкции:
- Первоначально необходимо убедиться в том, что все необходимые табличные документы располагаются в одном месте персонального компьютера.
- На следующем этапе необходимо зайти в табличный редактор Эксель и создать в нем новую книгу, которая будет служить инструментом объединения остальных табличных документов.
- При помощи специальной комбинации горячих клавиш «Alt+F11» перемещаемся в «Visual Basic».
- Сначала нажимаем на «Вставить», а затем в появившемся перечне жмем левой клавишей мышки на элемент, имеющий наименование «Модуль».
- Теперь сюда необходимо написать следующий небольшой код:
Sub GetSheets()
Path = «ваш путь»
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
- В переменную Path необходимо написать путь к тому месту персонального компьютера, в котором располагаются табличные документы для объединения.
- Производим сохранение табличного документа в формате «XLSM», чтобы активировать созданные макросы.
- Производим запуск макроса.
- Готово! Мы объединили все файлы, находящиеся в папке, в один табличный документ.
Заключение
Мы выяснили, что существует множество способов, позволяющих реализовать объединение нескольких файлов в один табличный документ. Использовать функцию под названием «Консолидация» целесообразно только в том случае, если в файлах содержится только числовая информация, так как функция не способна корректно работать с данными текстового формата. Самый эффективный способ, позволяющий качественно объединить табличный документы в один файл без потери информации, – это использование интегрированного языка программирования «Visual Basic» и активация специальных макросов. Однако каждый пользователь сможет сам подобрать более удобный для себя способ объединения табличных документов.
Объединить Excel
Это – свременный бесплатный инструмент, который был создан для быстрого объединения нескольких файлов в один Excel документ. Это приложение отвечает на запрос, чтобы облегчить отправку, совместное использование, печать и просмотр документов. Вы не должны тратить свое время, выполняя эти операции вручную. Наша цель состоит в том, чтобы предоставить вам наиболее эффективные решения для оптимизации рабочего процесса вашего офиса с помощью онлайн-приложений.
Особенности работы приложения»
Приложение дает возможность объединить несколько Excel файлов в один документ. Благодаря надежному слиянию документов Excel вы можете легко объединить несколько Excel с высокой скоростью и сохранить результат в различных форматах, включая PDF, DOCX, HTML, MD, EPUB, PNG и JPG. Приложение работает на всех операционных системах, включая Windows, Linux, MacOS и Android. От вас не требуется установка плагинов или дополнительного програмного обеспечения. Приложение работает онлайн, не требует регистрации и не запрашивает идентификацию с помощью капча.
- Простое объединение нескольких файлов Excel
- Возможность объединения несколько Excel файлов в один документ
- Возможность выбора порядка объединения файлов
- Сохраняй исходный документ в любой популярный формат
- Мгновенная загрузка, просмотр или отправка файла, полученного в результате, в виде вложения электронной почты
Как объединить Excel файлы
Откройте в веб-браузере наш сайт и перейдите к инструменту слияния.
Щелкните внутри белой области, чтобы загрузить Excel файлы, или перетащите их.
Нажмите кнопку «ОБЪЕДИНИТЬ», чтобы начать объединение файлов.
Мгновенная загрузка, просмотр или отправка объединенного файла по электронной почте.

















