Word какой язык программирования

Время на прочтение
7 мин

Количество просмотров 8.1K

Картинка pch.vector, freepik

Практически каждый из читателей, наверняка не раз (а кто-то и на постоянной основе), имеет потребность в написании и редактировании документов в среде Word.

Однако если подобная деятельность производится с некоторой периодичностью, пытливый ум сразу начинает думать о способах оптимизации своего труда. Одним из таких способов является программирование в среде Visual Basic for Applications,- среде разработки, которая встроена в известные офисные продукты: Word, Excel, PowerPoint и т.д. Статья больше вводная, для тех, «кто совсем не в теме» :-).

Следует сразу оговориться, что любое программирование требует для изучения достаточных временных ресурсов и, в ряде случаев, подобные трудозатраты могут быть неоправданными.

Поэтому, в этих случаях имеет смысл просто — напросто записать макрос. Которой представляет собой записанную последовательность ваших действий, которая должна быть повторена многократно для некой, часто повторяющейся обработки.

Макрос
Тут следует сказать, что по умолчанию, меню для записи макроса скрыто и его необходимо явным образом включить. Для этого нужно пройти по пути: Файл-Параметры

В открывшемся окне перейти в настройку ленты:

Далее, в правом окне, под названием «Основные вкладки», поставить галочку рядом с опцией «разработчик»:

В результате этих действий на ленте сверху у вас появится вкладка «разработчик»:

Войдя в которую, в левой части, вы как раз и сможете найти две интересующие нас опции: «Visual Basic» и «Макросы»:

Соответственно, далее если мы нажимаем на кнопку «Запись макроса», то мы сможем записать нашу последовательность действий:

Созданный макрос можно сохранить либо в конкретном документе, либо сделать его доступным для всех документов (если сохраним его в шаблоне normal.dotm):

После чего, записанный макрос может быть воспроизведён, если мы перейдём, нажав на кнопку «Макросы»:

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

Здесь существуют 2 опции:

  • правка кода уже имеющегося макроса
  • написание кода с нуля.

Для первого случая, нам нужно перейти нажав на «макросы», для того чтобы открылась окно выбора макроса и нажать на кнопку «отладка»:

Это приведёт к запуску среды разработки, где вы сможете увидеть свой записанный макрос в виде кода. Кстати говоря, это является одним из интересных лайфхаков, когда недостаточное знание программирования на VBA вы подменяете сгенерированным кодом макроса и реверс-инжинирингом, с попыткой вникнуть, «а как оно там внутри устроено?»:

Чуть выше, мы произвели ряд манипуляций, для того чтобы вынести вкладку «разработчик» на ленту. Однако если вы хотите не писать макросы, а писать код сразу, совершенно необязательно добавлять эту вкладку на ленту.

Среду разработки можно вызвать нажатием сочетания клавиш Alt+F11, после чего, написав нужный код, запустить его прямо из среды разработки.

Список готовых макросов можно вызвать нажатием сочетания клавиш ALT+F8.

Visual Basic for Applications(VBA)
Как мы уже говорили, разработка кода для приложений Office ведётся с использованием специального кода, который является версией интерпретируемого языка Visual Basic (несколько упрощённой его версией).

Благодаря использованию объектной модели компонентов (COM), могут применяться компоненты, используемые в ряде программ одновременно, для этого используется технология OLE (Object Linking and Embedding), суть которой заключается передаче части работы от одной программы к другой (в рамках среды Windows), и получение обратно результата.

Это означает, что теоретически, вы можете на VBA написать программу, которая будет использовать, например, средства Photoshop или Corel Draw, если конечно они установлены у вас на компьютере (однако, есть подозрение, что для этого потребуется более расширенная версия языка, чем тот, который идёт в комплекте с пакетом Office).

В рамках VBA объекты представлены в виде иерархии: Application/Document/Paragraph и т.д., то есть, как можно видеть в этой строке, каждый предыдущий — содержит последующий.

Получается своего рода «матрёшка», где одно вложено в другое и, если задуматься, это достаточно логично.

Например, главным объектом является Application. Создание этого объекта, другими словами, означает просто запуск Word. Но программа сама по себе никому не интересна, необходимо, чтобы внутри этой программы был создан или открыт некий документ (объект Document). В свою очередь, этот объект содержит целый ряд других элементов иерархии, которые служат для задания его параметров и оформления.

Согласно этому источнику, несмотря на то, что Word содержит множество объектов, по большому счёту, для успешной работы достаточно понимания всего лишь 5 объектов:

  • Application
  • Document
  • Selection
  • Range
  • Bookmark

Логика здесь следующая:

  • мы запустили Word (Application),
  • создали или открыли в нём документ(Document),
  • дальнейшие манипуляции в этом документе происходят либо с постановкой курсора в определенное место, либо с выделением определённого места в документе(Range).

Последний же объект (Bookmark) имеет смысл изучить для создания удобной навигации по документам, так как он просто управляет созданием удобных закладок.

Каждый из перечисленных выше объектов, имеет свой набор свойств и методов.

Более подробно о их сути вы можете почитать вот здесь.

В свою очередь, наиболее полный список всех объектов, с их описанием вы можете найти вот здесь.

Вкратце, любая программа на Visual Basic представляет собой сочетание приложения (в нашем случае Word), среды разработки и модулей.

Под модулями понимаются процедуры, которые содержат в себе программный код.

Для создания модуля, всего лишь нужно перейти в соответствующий шаблон (например, если мы создаём модуль, который должен быть доступен для всех документов, мы создаём его в шаблоне Normal). Для этого нажимаем на папке Microsoft Word Objects — правой кнопкой мыши и проходим по пути:

Модули могут быть представлены двумя видами:

  • подпрограммы
  • функции (предназначены для вычисления конкретного значения).

Структура типичной подпрограммы выглядит следующим образом:

Sub имя_подпрограммы ([Параметры])
Тело подпрограммы
End Sub

Структура функции выглядит следующим образом:

Sub имя ([Параметры])
Тело функции
имя=выражение
End Sub

Например, если у нас существует некая функция которая должна возвращать определённое значение, она может выглядеть следующим образом:

Sub TextFinder ([Параметры])
Тело функции
TextFinder=Selection.Find.found
End Sub

На примере тех же самых макросов, если у нас их более 1, они открываются в среде разработки, разделённые на отдельные подпрограммы, располагаясь друг за другом:

Для более полного ознакомления с языком Visual Basic для приложений, следует обратиться к официальному справочнику по языку.

Visual Basic for Applications является объектно-ориентированном языком программирования и полностью поддерживает постулаты этой концепции.

Типичная команда выглядит как разделённая точками в стиле ООП, где мы спускаемся по иерархии в самый низ, — до конкретного действия:

Application.ActiveDocument.PageSetup.Orientation = wdOrientLandscape

Например, приведённая выше команда, служит для того, чтобы установить альбомную ориентацию листа.

В редакторе кода присутствует система автодополнения кода: после того как вы ввели первый уровень объектной модели и поставили после него точку, система сама предлагает вам доступные варианты следующего уровня:

Весьма полезной является и справочная система, встроенная в редактор:
для получения справки необходимо всего лишь поставить курсор на нужную команду или место кода и нажать F1. Такая оперативность получения справки существенно облегчает самостоятельное изучение программирования в этой среде:

Достаточно интересным является режим отладки программы. Для этого, вам необходимо
записать какой-либо макрос, далее, войти в режим его отладки:

В этом режиме вы увидите, что та команда, которая будет выполнена следующей, — окрашена жёлтым цветом. В этом режиме исполнение команд производится построчно, что позволяет отловить ошибку, закравшуюся на каком-либо из этапов.

Для того чтобы исполнить следующую команду, следует каждый раз нажимать на клавишу F8:



Если параллельно с редактором кода вы откроете документ Word, на примере которого вы отрабатываете этот макрос, то вы будете сразу визуально видеть, что делает каждая построчно выполняемая команда (например, если это переход в некую ячейку таблицы и её выделение, — вы будете видеть этот процесс пошагово).

Но тут есть один нюанс: как вы могли видеть выше, программа начинает исполняться с самого начала. Но программа может быть достаточно длинной! Как сделать так, чтобы можно было провести, условно говоря, «юнит-тест» участка программы, который находится не в самом начале?

Для этого нужно всего лишь кликнуть в серую зону слева от программы — и там появится красная метка. Она означает то место, с которого стартует выполнение кода. Теперь, если мы нажмём на F8, — начало исполнения перескочит на эту метку:


Вообще говоря, программирование на VBA может быть достаточно мощной штукой, так как позволяет не только писать некие простые макросы, но даже и создать свой программный продукт, для генерации каких-либо отчётов или форм (и не только). Да, конечно, я сам имею такую слабость, — не желая изучать имеющиеся у продукта инструменты, пытаюсь решить проблему собственными знакомыми костылями (ну, знаю я, например, Java, — значит, буду решать проблему в рамках этого языка, игнорируя встроенные возможности Word). Однако, это не совсем правильный подход, так как «ученье — свет» :-).

Кто к этому так подходит, имеет и неплохие плюшки: совсем недавно на хабре вышла статья «как я с помощью VBA оплатил себе университет», которая наглядно показывает, что программирование на этом языке, в среде Office ещё рано списывать и может быть к этому стоит присмотреться повнимательней.

P.S. Вот мы тут гоняемся за интеллектуальными IDE, модными актуальными языками… А может вот оно, а? :-)

Будет очень интересно почитать в комментах, если кто то из читателей использовал неким интересным образом программирование под word в VBA и какие результаты это дало!

В двух словах изложу свой опыт: приходилось использовать достаточно продвинутые макросы для написания документации по компьютерному железу. Макросы позволяли «одним кликом» форматировать гигантскую таблицу с параметрами (регистры, поля регистров и их описание и т.д.). Форматировать хитро: первую строку выделить, первый столбец — искать в каждой строке диапазон битов регистра, вида [12:0], если найдено — применить стиль; такая же сложная логика форматирования по всей таблице (поиск определённых участков и их оформление. Скажем, таблица на 50 строк форматировалась… Секунд 15-20. Вручную — до бесконечности (в зависимости от лени и загруженности работой). Так что, макросы имеют право на жизнь!

Visual Basic — компьютерный язык (точнее, семейство языков), созданный и развиваемый корпорацией Microsoft, а также интегрированная среды разработки. Является дальнейшим развитием языка QuickBasic (также разработанного Microsoft), от которого унаследовал общую концепцию, стиль и синтаксис. 

Однако, развитие Visual Basic пошло в сторону процедурного, объектного, компонентного и событийного программирования. Язык активно используется как для разработки Windows-приложений, так и для создания ПО для других платформ. Visual Basic можно скачать и использовать как отдельно, так и в составе Microsoft Visual Studio. 

Лого Visual Basic 6.0
Логотип Visual Basic 6.0

История развития

История Visual Basic началась в 1991 году, когда на основе синтаксиса QuickBasic компания Microsoft выпустила первую версию нового языка для своей операционной системы Windows. Новшеством, выделяющим новинку, стала связь с графическим интерфейсом, ранее реализованная программистом Аланом Купером в прототипе Tripod. Но именно в Visual Basic 1.0 эта реализация достигла нужного уровня. В том же году вышла версия языка для операционной системы MS-DOS с конвертором кода для Windows.

Первые версии языка были не слишком популярны, потому что по своему синтаксису и возможностям практически не отличались от QBasic, за исключением связки с графическим интерфейсом. Второй билд был дополнен функцией подсветки синтаксиса, среда разработки стала проще и понятнее. 

Популярность Visual Basic начала расти с выходом версии 3.0 (1993 год). В нее были внесены существенные изменения — в частности, появилась возможность взаимодействовать с базами данных Access, а графический интерфейс переработали так, что работать с языком стало просто даже людям, не имеющим навыков в программировании. 

В 1995 году вышла версия 4.0, одновременно с релизом Windows 95 — первой по-настоящему популярной версией этой операционной системы. Эта связка сделала Visual Basic действительно востребованным языком среди программистов. Среди ее ключевых отличий — возможность разработки как 32-, так и 16-разрядных приложений для Windows, а также появление полноценного компилятора, существенно увеличивающего скорость выполнения программ. 

Начиная с версии 7.0, выпущенной в 2002 году, Microsoft резко изменила концепцию Visual Basic. Фактически, это уже был новый язык, хотя и позиционирующийся как логическое развитие предыдущего. Новая версия получила название Visual Basic.NET, она не имела обратной совместимости с предыдущими релизами. Ключевым отличием стало то, что код теперь стал полностью управляться фреймворком NET Framework Common Language Runtime. 

Версии языка Visual Basic

Таким образом, в семействе языков Microsoft Visual Basic можно выделить несколько основных версий.

Visual Basic Classic (классический). Это первая версия языка, главные отличия которого заключались в основанных на QBasic общей концепции и синтаксисе, а также жесткая привязка к своей среде разработки и операционной системе. Иначе говоря, программировать на нем можно было только в собственной IDE и ОС Windows. Среда разработки предлагала пользователю широкий набор инструментов, таких как встроенный отладчик, функция просмотра переменных и структур в режиме реального времени, всплывающие подсказки, подсветка синтаксиса и т.д. Из-за этого программировать на классическом Visual Basic вне IDE (например, в обычном текстовом редакторе) было просто невозможно. Эта версия перестала развиваться в 2002 году, когда ее сменил Visual Basic .NET.

Visual Basic for Applications (VBA). Фактически, это тот же самый Classic, только немного упрощенный и адаптированный под разработку макросов и прикладного ПО для конкретных приложений. Язык программирования VBA встроен в структуру офисного пакета Microsoft Office (Word, Excel и т.д.), а также программных продуктов от других разработчиков — например, AutoCAD, CorelDraw, SolidWorks. Основанный на стандарте Microsoft COM (Component Object Model), он может задействовать все имеющиеся в ОС Windows COM-компоненты и ActiveX. Иными словами, можно исключительно с помощью средств, например, CorelDraw и языка VBA создавать приложения для Microsoft Office.  

Visual Basic Scripting Edition (VBScript). Тоже урезанная версия классического Visual Basic, но направленная на разработку скриптов для приложений, использующих технологию Active Scripting. VBS применяется, например, для написания клиентских сценариев в Internet Explorer и серверного кода в веб-приложениях, автоматизации административных функций в ОС семейства Windows и т.д.

Visual Basic.NET. Версия, появившаяся в 2002 году и представлявшая собой другой язык, в котором старые методы, применявшиеся в классическом Visual Basic, использовать уже было нельзя. Его основное отличие — тесная интеграция с платформой .NET Framework, выпущенной в то же время. В этой версии акцент смещен с индивидуальных особенностей самого языка на возможности фреймворка. Концептуально Visual Basic.NET. развивался в сторону объектно-ориентированности, он стал поддерживать полиморфизм, статическую типизацию, наследование и перезагрузку операторов. Благодаря этому с помощью него стало возможным создание действительно крупных программных продуктов, которые одновременно были гибкими и масштабируемыми. Несмотря на популярность и очевидные достоинства Visual Basic.NET., компания Microsoft прекратила его поддержку в 2020 году в пользу другого своего языка C#. «Вижуал Бэйсик» продолжает поставляться в комплексе с новыми версиями платформы .NET, однако обновлений для него не планируется. 

Описание Visual Basic

Язык программирования «Вижуал Бэйсик» относится к категории императивных. Написанные на нем программы представляют собой строгую последовательность команд (приказов — отсюда и название «императивный»), причем каждая последующая использует данные, полученные при исполнении предыдущей. Кроме того, Visual Basic объединяет в себе элементы сразу нескольких парадигм (методологий) программирования:

  • Процедурной — можно разбивать задачу на более мелкие и группировать последовательно выполняемые операторы кода в подпрограммы для их решения;
  • Объектно-ориентированной — программу на Visual Basic можно представить как совокупность взаимодействующих друг с другом объектов, каждому из которых присвоен определенный класс, образующий определенную иерархию;
  • Компонентно-ориентированной — она представляет программу как совокупность отдельных независимых языковых конструкций (модулей или компонентов) исходного кода, предназначенных для повторного использования;
  • Событийно-ориентированной — в Visual Basic имеются встроенные обработчики событий, таких как использование программистом клавиатуры и мыши, сообщений, поступающих от других приложений, активности операционной системы и т.д.

Главной особенностью Visual Basic, отличающей его от большинства языков, стало применение в программировании графического интерфейса. Фактически, пользователь мог создать свое приложение как конструктор, используя готовые визуальные компоненты (например, кнопки управления, поля и т. д.), расставляя их в нужном порядке методом drag and drop (перетащи и брось). Так как эти компоненты имеют свои атрибуты и обработчики событий, они будут реагировать на действия пользователя при исполнении программы. Это дает возможность разрабатывать реально работающие (хоть и ограниченные по функционалу) приложения даже человеку, не имеющему никакого опыта в программировании.  

Интерфейс разработки в Visual Basic 6.0
Графический интерфейс разработки в Visual Basic 6.0

Написание программ на Visual Basic происходит в интегрированной среде разработки, которая помогает пользователю подсказками, подсветкой синтаксиса, автоматической подстановкой и т.д. Управленческие элементы обеспечивают основной функционал приложения, при этом разработчик может существенно расширить ее с помощью обработчиков событий, которые исполняют дополнительный код в зависимости от задействованного компонента.

До 4 версии у Visual Basic не было собственного компилятора, для запуска и исполнения программ использовались библиотеки, которые поставлялись вместе с языком. С появлением компилятора работа приложений значительно упростилась, хотя для реализации некоторых функций продолжали использоваться библиотеки. Однако, теперь они были интегрированы в саму операционную систему, что облегчало задачу разработчикам. В последних версиях компилятор поставляется вместе с Visual Basic в составе пакета Microsoft Visual Studio, куда также входят редактор исходного кода, отладчик и другие инструменты для разработки программ и веб-приложений.

Преимущества Visual Basic

Простота. Язык программирования Visual Basic унаследовал от своего прародителя QuickBasic простой синтаксис, который доступен для изучения новичкам в программировании. Поэтому для многих программистов именно с этого языка начинается знакомство с разработкой программ и веб-приложений. Кроме того, в нем прекрасно реализована концепция визуального проектирования, которая также снижает порог вхождения.

Высокая скорость разработки. Благодаря графическому интерфейсу на Visual Basic можно быстрее разрабатывать приложения. Особенно это касается программных продуктов для операционной системы MS Windows, в которую уже интегрированы многие нужные инструменты и библиотеки. С разработкой приложений для других платформ дело обстоит сложнее, их пользователям нужно скачивать и устанавливать эти компоненты отдельно. 

Мощная поддержка. Visual Basic долгое время был одним из основных продуктов компании Microsoft — одной из самых богатых и влиятельных IT-корпораций мира. Поэтому он до сих пор имеет значительную коммерческую и техническую поддержку (хотя проект прекратил развитие еще 2 года назад), информационное сопровождение в виде многочисленных учебников, инструкций, видеоуроков, справочных материалов и т. д. Это упрощает программистам поиск решений для возникающих перед ними задач.

Защита от ошибок. В Visual Basic используются указатели и доступ к памяти. Это делает написанные на нем приложения более стабильными. Кроме того, за счет постоянной автоматической компиляции программы по ходу ее написания в P-код (абстрактный машинный код для виртуальных машин) есть возможность быстро найти ошибку, не перезапуская приложение. Наличие удобного редактора с функциями автоматической подстановки, подсветки синтаксиса также повышают надежность работы конечного продукта.

Сильная типизация. В классическом Visual Basic была реализована строгая система типов. Это исключало возникновение многих неочевидных ошибок, которые свойственны языкам со слабой типизацией. С другой стороны, это же и в некоторой степени ограничивало возможности Visual Basic как императивного языка.

Недостатки Visual Basic

Ограниченная кроссплатформенность. На Visual Basic можно писать программы только под операционные системы Microsoft Windows и Apple MacOS. Хотя усилиями энтузиастов были разработаны некоторые способы, допускающие разработку приложений на VB для других платформ, особого распространения они не получили ввиду своей сложности.

Строгая привязка к среде программирования. Писать код на Visual Basic можно только с помощью поставляемых вместе с ним инструментов. С одной стороны, интегрированная среды разработки дает широкие возможности программисту. С другой — язык нельзя использовать вне ее, например, в обычном текстовом редакторе. В частности, это не позволяет писать на нем код многим программистам-пользователям операционных систем Linux. 

Медленная работа программ. Практически все функции языка реализованы посредством библиотеки времени исполнения. Она выполняет множество необязательных действий для проверки и преобразования типов, что существенно замедляет работу приложений. У небольших приложений этот недостаток практически незаметен за счет избыточности ресурсов современных компьютеров, но при выполнении больших и многопоточных программ становится ощутимым. 

Применение Visual Basic

Язык программирования Visual Basic создавался корпорацией Microsoft прежде всего как инструмент разработки продуктов для своей операционной системы Windows. Эта привязка сохранилась на протяжении всего срока развития и поддержки VB, за что неоднократно подвергалась критике. Однако, в рамках своей экосистемы он позволяет разрабатывать самые разные программные продукты:

  • плагины и макросы для приложений Microsoft Office, CorelDraw, AutoCAD и некоторых других профессиональных программных продуктов;
  • графические интерфейсы приложений, чему очень способствуют встроенные в язык инструменты визуальной разработки;
  • консольные приложения, запускаемые с помощью командной строки — например, файловые менеджеры, веб-браузеры, текстовые редакторы и т.д.;
  • игры — как правило, текстовые (вроде «О, счастливчик!») или несложные графические программы из-за того, что реализовать на Visual Studio полноценные проекты с развитой графикой и физикой очень сложно; 
  • специализированные приложения для выполнения математических, научных и статистических расчетов;
  • серверные и веб-приложения и другие программные продукты. 

Еще одной сферой, где Visual Basic популярен до сих пор, остается обучение программированию. Благодаря тому, что небольшое приложение на нем можно создать, практически не прописывая код, с помощью исключительно визуальных инструментов, это сильно снижало порог вхождения пользователя. При этом язык (точнее, его среда разработки) наглядно демонстрирует принцип работы компьютерной программы, взаимодействие ее компонентов и т. д. 

Значение и перспективы Visual Basic

В 2020 году Microsoft заявила, что прекращает развитие этого языка (точнее, его версии Visual Basic.Net), хотя он продолжит выходить в комплекте Visual Studio. Visual Basic for Applications (VBA) по-прежнему используется во многих приложениях, созданных самой корпорацией и сторонними разработчиками. Однако, новых функций в него добавляться уже не будет.

Visual Basic с самого своего появления имел неоднозначную репутацию в среде профессиональных программистов. Многие специалисты считали его «игрушечным», пригодным только для обучения и создания небольших приложений и игр. Простота языка (точнее, принципа визуального проектирования) критиковалась за то, что сильно снижала порог вхождения, из-за чего любители создавали хоть и работоспособные, но крайне неэффективные продукты. 

Тем не менее, Visual Basic стал одним из знаковых достижений компании Microsoft и оказал влияние на развитие других компьютерных языков. Некоторые из реализованных в нем решений были использованы в том же С#. Он также стал отличной «учебной партой» для многих специалистов, которые затем перешли на более востребованные ЯП. 

ГЛАВА 1

1.1. Зачем программировать в Microsoft Office

Ответ на этот вопрос прост: чтобы не делать лишней работы. Программирование в Office — это, прежде всего, уменьшение количества повторяющихся действий (и ручной работы, которая для этого требуется). Вот примеры некоторых типичных ситуаций, когда использование программирования просто напрашивается:

вам с определенной периодичностью приходится изготавливать документы, очень похожие друг на друга: приказы, распоряжения в бухгалтерию, договоры, отчеты и т. п. Часто информацию можно взять из базы данных, тогда использование программирования может дать очень большой выигрыш во времени. Иногда данные приходится вводить вручную, но и тогда автоматизация дает выигрыш во времени и в снижении количества ошибок;

разновидность такой же ситуации: одни и те же данные нужно использовать несколько раз. Например, вы заключаете договор с заказчиком. Одни и те же данные (наименование, адрес, расчетный счет, номер договора, дата заключения, сумма и т. п.) могут потребоваться во многих документах: самом договоре, счете, счете-фактуре, акте сдачи выполненных работ и т. д. Логично один раз ввести эту информацию (скорее всего, в базу данных), а затем автоматически формировать (например, в Word) требуемые документы;

когда нужно сделать так, чтобы вводимые пользователем данные автоматически проверялись. Вероятность ошибки при ручном вводе данных зависит от многих факторов, но, согласно результатам некоторых исследо-

Основыпрограммирования в Microsoft Office

13

ваний, она в среднем составляет около 2%. «Вылавливать» потом такие ошибки в уже введенных данных — очень тяжелый труд, поэтому лучше сразу сделать так, чтобы они не возникали.

В общем, любое действие, которое вам приходится повторять несколько раз, — это возможный кандидат на автоматизацию. Например, занесение сотен контактов в Outlook, или замена ресурса в десятках проектов Project, или анализ информации из базы данных за разные периоды в таблице Excel — это те ситуации, когда знание объектных моделей приложений Office спасет вас от нескольких часов или даже дней скучного труда.

Конечно, есть еще практиканты и аналогичный бесплатный трудовой ресурс, но хочется ли вам потом заниматься еще и поиском ошибок за ними? Кроме того, программирование несет и другие преимущества для сотрудника, который использует его в работе:

повышается авторитет сотрудника в глазах руководства и других коллег;

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

1.2. Что такое язык VBA

Поскольку эта книга предназначена для обычных пользователей, то без объяснения этого вопроса не обойтись. Формальное определение такое.

VBA (Visual Basic for Applications) — это диалект языка Visual Basic, расши-

ряющий его возможности и предназначенный для работы с приложениями Microsoft Office и другими приложениями от Microsoft и третьих фирм.

В принципе, при программировании в Office можно вполне обойтись и без языка VBA. Подойдет любой COM-совместимый язык, например: обычный

Visual Basic, VBScript, Java, JScript, C++, Delphi и т. п. Можно использовать и

.NET-совместимые языки программирования: VB.NET, C# и т. п. Вам будут доступны все возможности объектных моделей приложений Office. Например, если сохранить следующий код в файле с расширением vbs и запустить его на выполнение, то будет запущен Word, в котором откроется новый документ и будет впечатан текст:

Dim oWord

Set oWord = CreateObject(«Word.Application») oWord.Visible = true

oWord.Documents.Add

oWord.Selection.TypeText («Привет от VBScript»)

Тем не менее, VBA — это обычно самый удобный язык для работы с приложениями Office. Главная причина проста — язык VBA встроен в приложения Office, и код на языке VBA можно хранить внутри документов приложений Office: в документах Word, книгах Excel, презентациях PowerPoint и т. п. Конечно же, этот код можно запускать из документов на выполнение, поскольку среда выполнения кода VBA (на программистском сленге — хост) встроена внутрь этих приложений.

В настоящее время VBA встроен:

во все главные приложения Microsoft Office — Word, Excel, Access, PowerPoint, Outlook, FrontPage, InfoPath;

вдругие приложения Microsoft, такие как Visio и Project;

вболее 100 приложений третьих фирм, например, в CorelDRAW и CorelWordPerfect Office 2000, AutoCAD и т. п.

Но есть также и множество других преимуществ.

VBA — универсальный язык. Освоив его, вы не только получите ключ ко всем возможностям приложений Office и других, перечисленных ранее, но и будете готовы к тому, чтобы:

создавать полноценные приложения на Visual Basic (поскольку эти языки — близкие родственники);

использовать все возможности языка VBScript (это вообще «урезанный» VBA). В результате в вашем распоряжении будут универсальные средства для создания скриптов администрирования Windows, Web-

страниц (VBScript в Internet Explorer), Web-приложений ASP, для при-

менения в пакетах DTS и заданиях на SQL Server, а также для создания серверных скриптов Exchange Server и многое-многое другое.

VBA изначально был ориентирован на пользователей, а не на профессиональных программистов (хотя профессионалы пользуются им очень активно), поэтому создавать программы на нем можно быстро и легко. Кроме того, в Office встроены мощные средства, облегчающие работу пользователя: подсказки по объектам и по синтаксису, макрорекордер и т. п.

При создании приложений на VBA вам, скорее всего, не придется заботиться об установке и настройке специальной среды программирования и наличии нужных библиотек на компьютере пользователя — Microsoft Office есть практически на любом компьютере.

Несмотря на то, что часто приложения VBA выполняются медленнее, чем бы вам хотелось, они нересурсоемки и очень хорошо работают, например, на сервере терминалов. Но, как правило, для программ на VBA особых требований на производительность и не ставят: для написания игр, драй-

Основыпрограммирования в Microsoft Office

15

веров, серверных продуктов он не используется. По моему опыту, возникающие проблемы с производительностью VBA-приложений — это чаще всего не проблемы VBA, а проблемы баз данных, к которым они обращаются. Если проблемы действительно в VBA (обычно тогда, когда вам требуется сложная математика), то всегда есть возможность написать важный код на C++ и обращаться к нему как к обычной библиотеке DLL или встраиваемому приложению (Add-In) для Word, Excel, Access и т. п.

Программы на VBA по умолчанию не компилируются, поэтому вносить в них исправления очень удобно. Не нужно разыскивать исходные коды и перекомпилировать программы.

В среде программистов-профессионалов считается, что быстрее всего научиться создавать профессиональные приложения можно именно при помощи VBA и объектов приложений Office. Другие языки программирования (C++, Java, Delphi) придется осваивать намного дольше, а их возможности во многом избыточны для большинства повседневных задач, которые встречаются на любом предприятии. Кроме того, использование возможностей объектов Office (графического интерфейса, средств работы с текстом, математических функций и т. п.) позволит резко снизить трудоемкость при создании приложений.

1.3. Макрорекордер: быстрое создание макросов

В большинство программ Microsoft Office (исключая Access и FrontPage)

встроено замечательное средство, которое позволит вам создавать программы, вообще ничего не зная о программировании. Это средство называется макрорекордером.

Макрорекордер, как понятно из его названия, — это средство для записи макросов. Макрос — всего лишь еще одно название для VBA-программы, а макрорекордер — средство для его автоматического создания.

Приложения Microsoft Office 2003 по умолчанию настроены так, что не позволяют запускать макросы. Поэтому перед тем, как приступать к созданию макросов,

в меню Сервис | Макрос | Безопасность переставьте переключатель Уровень безопасности в положение Средняя или Низкая, а потом закройте и снова откройте данное приложение. Это потребуется сделать только один раз в начале работы.

Принцип работы макрорекордера больше всего похож на принцип работы магнитофона: мы нажимаем на кнопку — начинается запись тех действий,

которые мы выполняем. Мы нажимаем на вторую кнопку — запись останавливается, и мы можем ее проиграть (т. е. повторно выполнить ту же последовательность действий).

Конечно, макрорекордер позволяет написать только самые простые VBAпрограммы. Однако и он может принести много пользы. Например, можно «положить» на горячие клавиши те слова, словосочетания, варианты оформления и т. п., которые вам часто приходится вводить (должность, название фирмы, продукт, ФИО директора и ответственного исполнителя и т. д.), этим вы сэкономите много времени.

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

Перед созданием макроса в макрорекордере:

необходимо очень тщательно спланировать макрос, хорошо продумав, что вы будете делать и в какой последовательности. Если есть возможность, определите подготовительные действия. Например, если нужно вставить текущую дату в начало документа, может быть, имеет смысл первой командой макроса сделать переход на начало документа (<Ctrl>+<Home>);

посмотрите, нет ли готовой команды, которую можно сразу назначить клавише или кнопке на панели инструментов без создания макроса. Сделать это можно при помощи меню Сервис | Настройка. С вкладки Команды можно перетащить нужную команду на требуемую панель управления, и, нажав на этой же вкладке кнопку Клавиатура, в окне Настройка клавиатурыназначить длякоманды нужнуюкомбинацию клавиш;

если вы собираетесь при помощи макроса менять оформление текста, то правильнее вначале создать новый стиль с вашим оформлением, а потом уже применить этот стиль к тексту. В этом случае опять-таки можно обойтись без макроса, просто назначив стиль комбинации клавиш. Делается это при помощи того же диалогового окна Настройка клавиатуры, как и в предыдущем случае.

Чтобы создать макрос в макрорекордере (для тех программ Microsoft Office, для которых это средство предусмотрено, например, Word, Excel, PowerPoint, Project):

1.В меню Сервис | Макрос выберите команду Начать запись. В открывшемся окне Запись макроса (рис. 1.1) вам потребуется определить:

Имя макроса. Правило такое: имя не должно начинаться с цифры, не должно содержать пробелы и символы пунктуации. Максимальная длина в Excel — 64 символа, в Word — 80 символов. Можно писать порусски;

Основыпрограммирования в Microsoft Office

17

будет ли макрос назначен кнопке на панели управления или комбинации клавиш. Выполнить это, а также задать другие средства для вызова макроса можно и потом — об этом будет рассказано в следующем разделе;

где сохранить макрос. В Word в вашем распоряжении текущий файл и шаблон для всех вновь создаваемых документов — Normal.dot, в Excel — текущая книга, возможность создать макрос одновременно с созданием новой книги и личная книга макросов PERSONAL.XLS (макросы из этой скрытой книги будут доступны во всех книгах). Подробнее про то, где может храниться программный код, мы поговорим в

разд. 2.2;

Описание. В это поле лучше ввести информацию о том, для каких целей создается этот макрос — это подарок не только для других пользователей, но и для себя (через несколько месяцев).

Рис. 1.1. Диалоговое окно Запись макроса

2.После нажатия кнопки OK или назначения кнопки или клавиатурной комбинации начнется запись макроса. Указатель мыши при этом примет вид магнитофонной кассеты и появится маленькая панель Остановить запись. На ней всего две кнопки — Остановить запись и Пауза. Если вы случайно закрыли эту панель, остановить запись можно через меню Сер-

вис | Макрос | Остановить запись.

3.Самый простой способ запустить макрос, которому не назначена кнопка или клавиатурная комбинация, — в меню Сервис выбрать Макрос | Макросы (или нажать комбинацию клавиш <Alt>+<F8>), в открывшемся окне

Макрос (см. рис. 1.2) в списке выбрать нужный макрос и нажать кнопку Выполнить. Из этого же окна можно просматривать и редактировать макросы, удалять или перемещать их и т. п.

Если макросов создано много, то получить список всех назначений клавиш (включая назначения для встроенных макросов Word) можно при помощи меню Сервис | Макрос | Макросы, затем в окне Макрос в списке Макросы из выбрать Команд Word, а в списке Имя выбрать макрос ListCommands и нажать кнопку Выполнить. В ответ на приглашение нужно выбрать Текущие настройки меню и клавиш (иначе будет выведен полный список команд Word на 26 страниц). В ваш документ будет вставлена таблица с текущими назначениями клавиш, которую можно распечатать.

Если у вас уже есть значительное количество созданных при помощи макрорекордера макросов, то после освоения языка VBA имеет смысл подумать над ними и, может быть, внести изменения. Чаще всего стоит обратить внимание на следующие моменты:

если в вашем макросе повторяются какие-либо действия, возможно стоит организовать цикл;

может быть, есть смысл в ходе выполнения уточнить что-либо у пользователя (при помощи встроенной функции VBA InputBox() или элементов управления);

чтобы в ходе выполнения макроса не возникало ошибок, можно реализовать в нем проверку текущих условий.

Как все это сделать, будет рассказано в следующих главах.

И еще один очень важный момент, связанный с макрорекордером. Помимо того, что он позволяет создавать простенькие программы, пригодные для самостоятельного использования без всяких доработок, макрорекордер — это еще и ваш разведчик в мире объектных моделей приложений Office. Опытные разработчики часто пользуются им для того, чтобы понять, какие объекты из огромных объектных моделей приложений Office можно использовать для выполнения тех или иных действий.

Приведу пример: вам нужно автоматизировать создание диаграмм в Excel. Поскольку в русской версии Excel для создания диаграммы вручную вы используете команду Вставка | Диаграмма, то, скорее всего, в справке по VBA вы начнете в первую очередь искать объект Diagram. И вы его найдете и, возможно, потратите определенное время на его изучение, прежде чем поймете, что это не та диаграмма! Объект Diagram представляет то, что в русской версии Excel называется «Схематическая диаграмма» (доступна из того же меню Вставка), а обычная диаграмма — это объект Chart. А вот если бы вы пустили вперед разведчика (т. е. создали бы диаграмму с записью в макрорекорде-

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Понравилась статья? Поделить с друзьями:
  • Word какой редактор векторный или растровый
  • Word какой лучше скачать
  • Word какого года лучше
  • Word какие форматы читает
  • Word какие то иероглифы