Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Найти и скопировать диапазон данных из нескольких книг - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Найти и скопировать диапазон данных из нескольких книг (Макросы/Sub)
Найти и скопировать диапазон данных из нескольких книг
roboaug Дата: Среда, 22.02.2017, 11:39 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте, уважаемые.
Очень прошу Вас помочь понять, как найти определенный диапазон значений в нескольких листах и скопировать их в одну.
У меня есть несколько листов по одному шаблону, то есть шапка одинаковая и данные в них, те что в списках тоже выбираются по одному формату, но количество данных в каждой книге разное, нужно скопировать определенный диапазон только с заполненными данными (A:Q) без заголовков и без последних пустых строк, то есть без 1 строки и вставить всё это в книгу "общая" друг за другом, то есть как только вставились данные из 1 книги, следом за ними данные из 2 книги.

Макрорекодер пишет вставить данные в определенные ячейки, но я не знаю какие ячейки будут пустыми.
Если это важно, то на работе используются 2007 Excel
К сообщению приложен файл: 97-2003.rar (19.3 Kb) · 2007-2016.rar (22.8 Kb)


Сообщение отредактировал roboaug - Среда, 22.02.2017, 11:47
 
Ответить
СообщениеЗдравствуйте, уважаемые.
Очень прошу Вас помочь понять, как найти определенный диапазон значений в нескольких листах и скопировать их в одну.
У меня есть несколько листов по одному шаблону, то есть шапка одинаковая и данные в них, те что в списках тоже выбираются по одному формату, но количество данных в каждой книге разное, нужно скопировать определенный диапазон только с заполненными данными (A:Q) без заголовков и без последних пустых строк, то есть без 1 строки и вставить всё это в книгу "общая" друг за другом, то есть как только вставились данные из 1 книги, следом за ними данные из 2 книги.

Макрорекодер пишет вставить данные в определенные ячейки, но я не знаю какие ячейки будут пустыми.
Если это важно, то на работе используются 2007 Excel

Автор - roboaug
Дата добавления - 22.02.2017 в 11:39
sboy Дата: Среда, 22.02.2017, 13:07 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Будет работать если книги имеют названия Книга 1, 2 и т.д. (в другом случае надо условия цикла менять, например перебором всех файлов в папке)
[vba]
Код
Sub Union()
Dim wBf As Workbook
Dim wB As Workbook

Set wB = ThisWorkbook
    For x = 1 To 2 'количество книг
      Set wBf = Workbooks("Книга" & x & ".xlsm")
        With wB.Sheets(1)
         iR = .Cells(Rows.Count, 1).End(xlUp).Row + 1
         iRx = wBf.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
            wBf.Sheets(1).Range("A2:Q" & iRx).Copy
         .Range("A" & iR).PasteSpecial (xlPasteAll)
        End With
    Next
End Sub
[/vba]
К сообщению приложен файл: Downloads.zip (30.2 Kb)


Яндекс: 410016850021169
 
Ответить
СообщениеДобрый день.
Будет работать если книги имеют названия Книга 1, 2 и т.д. (в другом случае надо условия цикла менять, например перебором всех файлов в папке)
[vba]
Код
Sub Union()
Dim wBf As Workbook
Dim wB As Workbook

Set wB = ThisWorkbook
    For x = 1 To 2 'количество книг
      Set wBf = Workbooks("Книга" & x & ".xlsm")
        With wB.Sheets(1)
         iR = .Cells(Rows.Count, 1).End(xlUp).Row + 1
         iRx = wBf.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
            wBf.Sheets(1).Range("A2:Q" & iRx).Copy
         .Range("A" & iR).PasteSpecial (xlPasteAll)
        End With
    Next
End Sub
[/vba]

Автор - sboy
Дата добавления - 22.02.2017 в 13:07
kalendarka Дата: Среда, 22.02.2017, 13:38 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
...


Сообщение отредактировал kalendarka - Среда, 22.02.2017, 13:52
 
Ответить
Сообщение...

Автор - kalendarka
Дата добавления - 22.02.2017 в 13:38
sboy Дата: Среда, 22.02.2017, 13:49 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
roboaug, kalendarka, %)
Вы один человек?


Яндекс: 410016850021169
 
Ответить
Сообщениеroboaug, kalendarka, %)
Вы один человек?

Автор - sboy
Дата добавления - 22.02.2017 в 13:49
Wasilich Дата: Среда, 22.02.2017, 15:21 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
нужно скопировать определенный диапазон только с заполненными данными (A:Q)

перебором всех файлов в папке

Так надо?
[vba]
Код
Sub обединить()
Dim iPath$, iFail$, aFail$, ps&
Dim otkuda As Range
Dim kuda As Range
Application.ScreenUpdating = False: Application.EnableEvents = False: Application.DisplayAlerts = False
iPath = "C:\Отчеты\" ' Папка где лежат файлы УКАЗАТЬ СВОЮ
iFail = Dir(iPath)
aFail = ActiveWorkbook.Name
Do While iFail <> ""
    Workbooks.Open Filename:=iPath & iFail
    ps = Range("A" & Rows.Count).End(xlUp).Row
    Set otkuda = Sheets("Лист1").Range("A2:Q" & ps)
    Windows(aFail).Activate
    ps = Range("A" & Rows.Count).End(xlUp).Row + 1
    Set kuda = Sheets("Лист1").Range("A" & ps)
    otkuda.Copy kuda
    Windows(iFail).Close
    iFail = Dir
Loop
Application.ScreenUpdating = True: Application.EnableEvents = True: Application.DisplayAlerts = True
End Sub
[/vba]
 
Ответить
Сообщение
нужно скопировать определенный диапазон только с заполненными данными (A:Q)

перебором всех файлов в папке

Так надо?
[vba]
Код
Sub обединить()
Dim iPath$, iFail$, aFail$, ps&
Dim otkuda As Range
Dim kuda As Range
Application.ScreenUpdating = False: Application.EnableEvents = False: Application.DisplayAlerts = False
iPath = "C:\Отчеты\" ' Папка где лежат файлы УКАЗАТЬ СВОЮ
iFail = Dir(iPath)
aFail = ActiveWorkbook.Name
Do While iFail <> ""
    Workbooks.Open Filename:=iPath & iFail
    ps = Range("A" & Rows.Count).End(xlUp).Row
    Set otkuda = Sheets("Лист1").Range("A2:Q" & ps)
    Windows(aFail).Activate
    ps = Range("A" & Rows.Count).End(xlUp).Row + 1
    Set kuda = Sheets("Лист1").Range("A" & ps)
    otkuda.Copy kuda
    Windows(iFail).Close
    iFail = Dir
Loop
Application.ScreenUpdating = True: Application.EnableEvents = True: Application.DisplayAlerts = True
End Sub
[/vba]

Автор - Wasilich
Дата добавления - 22.02.2017 в 15:21
roboaug Дата: Четверг, 23.02.2017, 07:59 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо большое, всё работает!
 
Ответить
СообщениеСпасибо большое, всё работает!

Автор - roboaug
Дата добавления - 23.02.2017 в 07:59
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Найти и скопировать диапазон данных из нескольких книг (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!