Сложный макрос 

«Писать макросы не сложно, сложно писать красивые макросы»

Джон Уокенбах

Консультант Microsoft

по проектированию электронных таблиц

 

Довольно часто приходится копировать данные из одного рабочего листа в другой. Давайте с помощью макроса постараемся автоматизировать этот процесс.

 

Синхронизация двух листов в файле Excel

 

Откроем файл Excel  Пример и запустив запись макроса, скопируем из листа Лист1 любую ячейку в лист Лист2.

Теперь давайте откроем код для редактирования: СервисМакросМакросы … где должно появиться окошечко с вашими записанными макросами. Выделите редактируемый Макрос и нажмите Изменить

Вы перейдёте в режим редактирования VBE (Visual Basic Editor). Это специализированный и достаточно навороченный редактор VBA. Не стоит его бояться, слева должна появиться панель (на подобии Проводника) с имеющимися разделами (модулями).

Нас в принципе интересуют разделы с названиями Module1 и тд. В этих модулях хранится код VBA. Наверху имеется название VBA-проекта (в скобочках название файла Excel) у нас это (Macros2.xls). Нажмём на этот модуль Module1.

Перед вами должен появится программный код VBA, давайте разбираться:


Sub Макрос2 ()         оператор Sub это начало программы, мы говорим VBA, что хотим что-то создать. Макрос2         это название нашего макроса, его можно переименовать.

 

Макрос2 Макрос  все записи, которые имеют перед собой знак ‘ являются комментариями в программе и не исполняются. Таким образом, скажем можно прокомментировать своё действие Selection.Copy Копируем выбранную ячейку. Или даже временно заблокировать целую строчку программного кода. Всё, что окрашивается зелёным цветом – это комментарии.

 

Range (“G2”).Select Мы выделяем ячейку G2 на активном листе.

 

Selection.Copy          Копируем эту выделенную ячейку в память компьютера (в буфер обмена).

 

Sheets(“Лист1”) .Select      Находим и выделяем лист Лист1

 

Range (“Н10”).Select          На выделенном листе Лист1 выделяем ячейку Н10

 

ActiveSheet.Paste     На выделенном листе Лист1 вставляем в ячейку Н10 данные из буфера.

 

End Sub          Сообщаем VBA о нашем желании завершить программу.


 

Вот так наши действия записал компьютер в VBA-код. Так как Лист, из которого нужно копировать данные не указан (указана только ячейка G2), VBA будет копировать ячейку G2 из любого листа, в Лист 1  в ячейку H10.

Естественно, что этот код можно грамотно подредактировать и изменить по своим желаниям.

 

Синхронизация двух файлов Excel.

В качестве примера, скопируйте на жёсткий диск и откройте (одновременно) два файла:                        Пример 1    Пример 2

 

(Данный пример находится в файле Macros2.xls в Module2)

 


Sub Bridge ()’ Начало программы Bridge

 

Макрос удалённого доступа

 

Windows("Test.xls").Activate’ Выбираем файл из которого будем копировать ячейку

Sheets("Лист1").Select’ Выбираем лист в этом файле

'Range("A1").Select’ Можем выбрать определённую ячейку. Если заблокировать строку – будет выбрана ячейка, которая изначально выделена на листе.

Selection.Copy’ Копируем ячейку

 

Windows("Macros2.xls").Activate’ Выбираем файл в который будем копировать ранее скопированную ячейку

Sheets("Лист 2").Select’ Выбираем лист в этом файле

'Range("A1").Select’ Выбираем фиксированную ячейку, которая будет постоянна для вставки. Если заблокировать строку – будет выбрана ячейка, которая изначально выделена на листе.

ActiveSheet.Paste’ Вставляем значение

 

End Sub’ Завершаем программу


 

Суть этой программки в следующем: мы из открытого файла Test.xls копируем выделенную ячейку на листе Лист 1 в файл Macros2.xls на лист Лист 2

Записав этот макрос, не забудьте присвоить ему комбинацию клавиш для запуска:

СервисМакросМакросы …

Выбираем Параметры … и вписываем букву для комбинации (в нашем случае это q).

 

Теперь при нажатии комбинации клавиш Ctrl + q  , у нас из файла Test.xls копируется выделенная ячейка в файл Macros2.xls (естественно эти файлы должны быть открыты и рабочие листы чётко прописаны).

 

Можно украсить свою программу. Скопируйте в файл Macros2.xls любую картинку (в примере уже имеется кнопка) и выделив эту картинку правой кнопкой мыша выберите опцию Назначить макрос … После чего откроется список макросов – выберите один из них. Теперь нажимая на заветную кнопочку, вы автоматически будете запускать этот макрос. Естественно, с этой кнопкой можно выполнять различные манипуляции: делать надписи, раскрашивать, растягивать и тд.

 

 

Назад    Главная    Далее