Профессиональные приемы работы в Microsoft Excel

Пожалуйста, войдите или зарегистрируйтесь.


Расширенный поиск  

Новости:

Подпишитесь на рассылку новых сообщений форума через службу рассылок: Subscribe.ru

Автор Тема: Копирование нескольких диапазонов из одного файла в другой  (Прочитано 447 раз)

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

alfatboy

  • Пользователь
  • **
  • Уважение: +1/-0
  • Оффлайн Оффлайн
  • Сообщений: 24

Добрый день!
Есть общая база данных "База предписаний Общая". В данной базе три вкладки УН, ИБН-Р, ИВУТТ.
Необходимо скопировать данные из "База предписаний Общая" в отдельные файлы "База предписаний УН", "База предписаний ИВУТТ", "База предписаний ИБН-Р".
Только определенные диапазоны.
Из "База предписаний Общая" С6:G6, J6 в "База предписаний УН" С6:Н6 - значения выделены зеленым и синим цветом в прилагаемых таблицах. - данный диапазон постоянный и не меняется.

Из "База предписаний Общая" А63:Y65 в "База предписаний УН" A12:Y14 - значения выделены красным цветом в прилагаемых таблицах. - данный диапазон меняется по нижнему значению.

Проблема в том, что "База предписаний Общая" постоянно дополняется и диапазон А63:Y65 увеличивается А63:Y80, А63:Y159 и т.д.
Написал макрос (корявенький).
И в строке Range("A63:Y65").Select приходится вручную прописывать последнюю строку Y80 Y159 и т.д.
Есть ли возможность написать макрос который сам будет создавать файлы "База предписаний УН", "База предписаний ИВУТТ", "База предписаний ИБН-Р" и не нужно будет в нем прописывать меняющийся диапазон "A63:Y65". Данные в "База предписаний УН" С6:Н6 необходимо вставлять как значения, чтобы убрать ссылки на формулы.

Sub Название_Макроса2()
Workbooks.Open Filename:="C:\....\База предписаний Общая.xlsx"
 'Скопировать нужный диапазон в открывшейся книге
    Sheets("УН").Select
    Range("A63:Y65").Select
    Selection.Copy
'Выделяем и вставляем скопированные данные в ячейку A12
    Windows("База предписаний УН.xlsx").Activate
    Sheets("УН").Select
    Range("A12").Select
    ActiveSheet.Paste
Windows("База предписаний Общая.xlsx").Activate
    Sheets("УН").Select
    Range("C6:G6").Select
    Selection.Copy
    Windows("База предписаний УН.xlsx").Activate
    Sheets("УН").Select
    Range("C6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Windows("База предписаний Общая.xlsx").Activate
    Sheets("УН").Select
    Range("J6").Select
    Selection.Copy
    Windows("База предписаний УН.xlsx").Activate
    Sheets("УН").Select
    Range("H6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
'Закрываем книгу
Workbooks("База предписаний УН.xlsx").Save
Workbooks("База предписаний УН.xlsx").Close
Windows("База предписаний Общая.xlsx").Activate
 Workbooks("База предписаний Общая.xlsx").Save
Workbooks("База предписаний Общая.xlsx").Close
End Sub
« Последнее редактирование: 17.02.2022, 14:11:24 от Serge 007 »
Записан

Serge 007

  • Администратор
  • Ветеран
  • *****
  • Уважение: +341/-0
  • Оффлайн Оффлайн
  • Сообщений: 3 038
    • Мир Excel

Здравствуйте

И в строке Range("A63:Y65").Select приходится вручную прописывать последнюю строку Y80 Y159 и т.д.
Последнюю заполненную строку можно искать так (для первого столбца):Dim LastRow As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox LastRow

Range("c1:c" & LastRow).SelectЭта строка кода выделит все те ячейки третьего столбца, напротив которых в первом столбце есть данные
Записан
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Яндекс-деньги: 41001419691823 | WMR:126292472390

alfatboy

  • Пользователь
  • **
  • Уважение: +1/-0
  • Оффлайн Оффлайн
  • Сообщений: 24

Спасибо за подсказку.
Изменил код. Вроде работает, но при работе выдает сообщение "Microsoft Excel 73"
Может что-то не так прописал?

Sub Название_Макроса2()

Workbooks.Open Filename:="C:\Users\solovevai1\Documents\1.База предписаний\Образец базы\Копирование Базы\Пример\База предписаний Общая.xlsx"
 'Скопировать нужный диапазон в открывшейся книге
    Sheets("УН").Select
Dim LastRow As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox LastRow
Range("a63:y" & LastRow).Select
    Selection.Copy
'Выделяем и вставляем скопированные данные в ячейку A12
    Windows("База предписаний УН.xlsx").Activate
    Sheets("УН").Select
    Range("A12").Select
    ActiveSheet.Paste
Windows("База предписаний Общая.xlsx").Activate
    Sheets("УН").Select
    Range("C6:G6").Select
    Selection.Copy
    Windows("База предписаний УН.xlsx").Activate
    Sheets("УН").Select
    Range("C6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Windows("База предписаний Общая.xlsb").Activate
    Sheets("УН").Select
    Range("J6").Select
    Selection.Copy
    Windows("База предписаний УН.xlsx").Activate
    Sheets("УН").Select
    Range("H6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
'Закрываем книгу
End Sub
« Последнее редактирование: 17.02.2022, 16:22:45 от Serge 007 »
Записан

Serge 007

  • Администратор
  • Ветеран
  • *****
  • Уважение: +341/-0
  • Оффлайн Оффлайн
  • Сообщений: 3 038
    • Мир Excel

...при работе выдает сообщение "Microsoft Excel 73"...
На какой строке кода? Приложите скрин

PS Используйте теги "Код" для оформления кодов макросов
Записан
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Яндекс-деньги: 41001419691823 | WMR:126292472390

alfatboy

  • Пользователь
  • **
  • Уважение: +1/-0
  • Оффлайн Оффлайн
  • Сообщений: 24

Добрый день!
Это не ошибка, это сообщение до какой строки было произведено копирование.
Так-то не мешает, просто "ОК" нажимаешь.
Спасибо за помощь.
Записан

Serge 007

  • Администратор
  • Ветеран
  • *****
  • Уважение: +341/-0
  • Оффлайн Оффлайн
  • Сообщений: 3 038
    • Мир Excel

Это не ошибка, это сообщение до какой строки было произведено копирование.
Вот эту строку из кода удалите или закомментируйте: MsgBox LastRow
Записан
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Яндекс-деньги: 41001419691823 | WMR:126292472390

alfatboy

  • Пользователь
  • **
  • Уважение: +1/-0
  • Оффлайн Оффлайн
  • Сообщений: 24

Спасибо за подсказку. Сообщение пропало.
Записан
 



Темы без ответов

27.05.2022 14:38 конструкция из Shape 261
09.08.2019 14:09 Макрос для заполнения таблиц через форму 5159
18.07.2019 16:02 Рассылка почты из Excel при помощи почтовой программы TheBAT! 4543
07.02.2019 01:36 Как удалить дубликаты из выпадающего связанного списка? 6126
03.03.2018 00:00 Подсчет отработанного времени, за исключением заранее определенных перерывов 3220
23.05.2017 11:20 Копирование данных из одной таблицы в умную таблицу по условию 5043
15.03.2017 15:45 автозамена картинок PowerPoint 3952
11.03.2017 13:43 Изменить нумерацию страниц 3889
07.02.2017 18:43 Блокировка ячеек по наступлению даты 3008
28.08.2016 19:29 Одинаковые заголовки после обновления оглавления 3496





Яндекс цитирования msexcel.ru Яндекс.Метрика

Страница сгенерирована за 0.213 секунд. Запросов: 117.