Введение в VBA
«В результате своей эволюции Visual Basic превратился в Объектно-ориентированый язык программирования (Visual Basic for Application). Хотя освоение приёмов работы с объектами и представляет некоторую трудность в начале знакомства с VBA, ожидаемая отдача того стоит»
Стив Каммингс
Ведущий программист
компании Microsoft Corp.
Всё начиналось примерно в 60-х годах, когда был разработан оригинальный язык программирования BASIC (Beginner`s All-purpose Symbolic Instruction Code). Он был достаточно «прост» в понимании и отвечал достаточно серьёзным требованиям выполняемых задач. Однако, с развитием мощности компьютеров и как следствие – появлением более совершенного программного обеспечения, в пакет MS Office фирма Microsoft внедрила в виде встроенного программного приложения на основе ранее известного BASIC, более совершенную и интегрированную на «простого пользователя» платформу и назвала её VBA (Visual Basic for Application). Основная цель состояла в предложении пользователям сравнительно простого в использовании и достаточно мощного инструмента для выполнения очень широкого спектра задач. И в принципе , Microsoft это удалось.
На сегодняшний день, VBA является мощным программным дополнением к таким пакетам как:
· Microsoft Office – Word, Excel, PowerPoint, Access, Outlook, FrontPage и тд.
· Microsoft Project
· CorelDraw версии 9 или 10 и Corel WordPerfect Office 2000
· Серия графических бизнес-приложений iGrafx от Micrografx
· Visio версии 4.5 , 5 или 2000
· AutoCAD R14, AutoCAD 2000 или AutoCAD 2000i для Windows
· Autodesk Map
· TurboCAD Professional
· M.Y.O.B. Accounting Software
· Пакет программ для учёта ресурсов Great Plains
· OmniTrader, средства оценки рисков и управления торговыми операциями.
· а также иные приложения, в которых могут использоваться как полноформатные версии VBA, так и урезанные (VBscript) и тд.
Список возможностей VBA просто фантастический, т.к. практически сам пользователь создаёт под себя программы или изменяет уже имеющиеся ресурсы.
В рамках данной методички я не планировал углубляться в детализированное изучение VBA и остановлюсь исключительно на простых примерах.
Макросы
Макрос – программный элемент-надстройка VBA на уже имеющемся массиве информации, с целью многофакторного управления этим массивом.
Как выразился тот же самый Стив Каммингс: «VBA ведёт паразитический образ жизни» и в этом есть доля правды.
Допустим, у нас в Excel возникла задачка, в процессе которой нам необходимо сверить 2 базы данных, где в каждой базе имеется 3 параметра (код, наименование и стоимость), причём не факт, что эти комбинации одинаковы да ещё и разбросаны. Значит, необходимо создать некую программу, которая будет по порядку сверять все возможные комбинации из одной базы в другой. А теперь помножьте количество этих комбинаций одной базы (10 – 15 тысяч) на количество в другой (10 – 15 тысяч) и получаете приближённую корреляцию разброса в пределах 15 000 Х 15 000 = 225 000 000 операций сверки, неслабо вручную ??? Согласитесь – задачка не простая: подбирать по трём комбинациям такие же комбинации в другой базе. Но для программы VBA (программный код займет всего примерно 10 строчек) эту проблемку под силу уладить всего за несколько минут, а может и того быстрее.
Но для таких решений и более сложных задач (по уровню исполнения порой не уступающих таким шедеврам как 1С, Axapta Navision) требуется профессиональное знание VBA.
Простые Макросы
В Excel возможно создавать Макросы простым нажатием нескольких клавиш, при чём вообще даже понятия не имея о программировании. А может вообще Макросы это плод безумной фантазии Microsoft ??? !!!!
Так вот такие «фантазии» называются «простыми макросами» и не требуют к себе особого внимания. Естественно, если вам захочется усовершенствовать ваш макрос (а это желание возникнет у вас с первых же дней работы с VBA), то придётся лезть в программу и менять программный код.
Программный код – набор специализированных символов, с целью написания рабочей программы.
А вот когда вы прикоснётесь к коду – это будет называться «сложным макросом».
· Откройте Лист Excel и в ячейке 1А вставьте цифру 7.
· Сервис – Макрос – Начать запись…
· Должно появиться окошко:
· Где мы указываем Имя макроса и комбинацию клавиш для его запуска (в нашем примере это Ctrl + q)
· Как только вы нажали кнопку Начать запись… Excel начинает дотошно записывать все выполняемые вами операции с целью дальнейшего запуска. Будьте очень внимательны при записи макроса – не делайте лишних действий и ошибок !!!
· И начинаем (после нажатия ОК) записывать макрос, как музыку на диске: сначала мы выделяем ячейку А1 нажав на неё, затем копируем её и нажав скажем на ячейку С1 вставляем значения (простая операция копирования).
· Во время записи макроса, на экране появится рабочая кнопка остановки записи макроса и когда вы закончите экспериментировать – нажмите на квадратик.
· А теперь сотрите данные с листа в ячейку А1, проставьте любые значения и нажмите Ctrl + q. (Типичная ошибка – не забывайте переводить раскладку клавиатуры под комбинацию клавиш макроса). Если вы всё сделали правильно, в ячейку С1 должны автоматически копироваться значения А1.
Вот мы и создали простой макрос. При нажатии комбинации клавиш, мы моментально выполняем заданную пока простую задачу.
Идеальное средство для создания «горячих клавиш».
А теперь попробуйте выделить рабочий лист и тогда макрос будет показывать вам его по первому требованию. Или к примеру, уберите Автофильтр и тогда вам не понадобится лезть в опцию Данные – Фильтр – Автофильтр. Или попробуйте скопировать данные из одного листа в другой и тд. Даже не смотря на примитивность операций – они могут значительно сократить время на выполнение каких-то однотипных действий.
Ну что же, поздравляю – вы прикоснулись к великолепному !!!
А вот так выглядит программный код первой задачки копирования ячеек:
Обычно, когда меня просят «быстренько» научить работе с VBA, я отвечаю так:
«Показать как работает макрос я могу за 3 минуты. Рассказать об основных операторах за 3 дня. Научить создавать серьёзные программы за 3 года.»
Если бы ЭТО было просто – я бы об этом не писал.
Крайне рекомендуется скопировать файлы на жёсткий диск и снять защиту с макросов.
Для завершения операции, нажмите клавишу Esc и в появившемся меню нажмите кнопку End