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

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


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

Новости:

Теперь на форум можно залогиниться / зарегистрироваться с помощью ВКонтакте. Уже существующие пользователи могут связать свою учетную запись с аккаунтом ВКонтакте одним кликом в профиле пользователя http://forum.msexcel.ru/index.php?action=profile;area=account

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

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

alfatboy

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

Добрый день!
Есть общая база данных "База предписаний Общая". В данной базе три вкладки УН, ИБН-Р, ИВУТТ.
Необходимо скопировать данные из "База предписаний Общая" в отдельные файлы "База предписаний УН", "База предписаний ИВУТТ", "База предписаний ИБН-Р".
Только определенные диапазоны.
Из "База предписаний Общая" С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 033
    • Мир 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
  • Оффлайн Оффлайн
  • Сообщений: 20

Спасибо за подсказку.
Изменил код. Вроде работает, но при работе выдает сообщение "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 033
    • Мир Excel

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

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

alfatboy

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

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

Serge 007

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

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

alfatboy

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

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



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

09.08.2019 14:09 Макрос для заполнения таблиц через форму 4998
18.07.2019 16:02 Рассылка почты из Excel при помощи почтовой программы TheBAT! 4413
07.02.2019 01:36 Как удалить дубликаты из выпадающего связанного списка? 5972
03.03.2018 00:00 Подсчет отработанного времени, за исключением заранее определенных перерывов 3117
23.05.2017 11:20 Копирование данных из одной таблицы в умную таблицу по условию 4917
15.03.2017 15:45 автозамена картинок PowerPoint 3838
11.03.2017 13:43 Изменить нумерацию страниц 3764
07.02.2017 18:43 Блокировка ячеек по наступлению даты 2880
28.08.2016 19:29 Одинаковые заголовки после обновления оглавления 3379
07.08.2016 17:33 Определить нумерацию как элемент стиля 3593





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

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