Начало работы с VBA в Office 2010

Office 2010

Сводка. В этой статье, предназначенной не для программистов, описаны некоторые простые способы расширить возможности Microsoft Office 2010 с помощью языка Visual Basic для приложений (VBA). Здесь представлен обзор языка VBA, некоторые ключевые сведения о доступе к VBA в различных приложениях Office 2010, простые примеры кода и некоторые примеры приложений (13 печатных страниц).

Дата последнего изменения: 24 апреля 2015 г.

Применимо к: Access 2010 | Excel 2010 | Office 2007 | Office 2010 | Open XML | PowerPoint 2010 | Publisher 2010 | SharePoint Server 2010 | VBA | Word 2010

В этой статье
Программирование на VBA в Office 2010
Причины использования VBA
Программирование на VBA 101
Советы и приемы программирования
Более подробное изучение программирования
Все приложения Office 2010: примеры кода
Сводка
Дополнительные ресурсы

Опубликовано: ноябрь 2009 г.

Автор: Тим Бернетт, Kingfisher Computer Consulting

Содержание

Столкнулись с необходимостью раз за разом удалять пятьдесят таблиц в Word 2010? Требуется, чтобы при открытии документа запрашивался пользовательский ввод? Не знаете, как эффективно перенести свои контакты из Microsoft Outlook 2010 в электронную таблицу Microsoft Excel 2010?

Можно выполнить эти задачи и достичь гораздо большего с помощью VBA для Office 2010. Это простой и в то же время мощный язык программирования, который можно использовать, чтобы расширить возможности приложений Office 2010.

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

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

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

В этой статье описываются некоторые основные причины для использования возможностей программирования на VBA. Здесь описывается язык VBA и встроенные средства, которые можно использовать для работы со своими решениями. И, наконец, в данной статье можно найти советы и приемы, чтобы избежать некоторых распространенных ошибок программирования.

Есть три основных причины использовать программирование на VBA в Office 2010.

Автоматизация и повторяемость

Программирование на VBA эффектно и эффективно при создания решений для устранения повторяющихся проблем форматирования и исправлений. Например, вам когда-нибудь приходилось изменять стиль абзаца в верхней части каждой страницы в Word? Или менять формат нескольких таблиц, скопированных из Excel в документ Word или электронную почту Outlook? А вносить одинаковые изменения в несколько контактов Outlook?

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

Расширения возможностей взаимодействия с пользователем

Иногда требуется заставить пользователей взаимодействовать с приложением Office 2010 или документом определенным образом, который недоступен в стандартном приложении. Например, можно уведомлять пользователей о необходимости выполнить определенное действие при открытии, сохранении и закрытии документа.

Взаимодействие приложений Office 2010

Нужно скопировать все контакты из Outlook 2010 в Word 2010 и отформатировать их определенным способом? Или же нужно переместить данные из Excel 2010 в набор слайдов PowerPoint 2010? Иногда простое копирование и вставка не работают так, как надо, или же это происходит слишком медленно. Можно использовать программирование на VBA для взаимодействия с двумя или более приложениями Office 2010 одновременно, а затем изменить содержимое в одном приложении на основе содержимого в другом.

Другой способ

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

Важнейший вопрос состоит в поиске более легкого способа. Перед запуском проекта VBA обратите внимание на встроенные инструменты и стандартные функциональные возможности. Например, если необходимо выполнить времяемкую задачу редактирования или размещения элементов, для решения проблемы следует рассмотреть возможность использования стилей или сочетания клавиш. Можете ли вы выполнить задачу единожды, а затем повторить ее с помощью сочетания клавиш CTRL+Y ("Повторить")? Можно ли создать документ правильного формата или с нужным шаблоном и затем скопировать содержимое в новый документ?

Приложения Office 2010 обладают множеством возможностей; возможно, что нужное решение уже в них предусмотрено. Уделите время изучению дополнительных сведений об Office 2010 до начала программирования.

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

Использование кода для выполнения операций приложениями

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

Например, представьте себе пользователя, который открывает документ в Word 2010, вносит несколько изменений, сохраняет документ и закрывает его. В мире программирования на VBA приложение Word 2010 предоставляет объект Document. Используя код VBA, можно заставить объект Document выполнять такие действия, как открытие, сохранение и закрытие.

В следующем разделе описывается организация объектов.

Объектная модель

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

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

Уже существующим объектом можно манипулировать, задавая его свойства и вызывая его методы. Если представить объект в виде существительного, тогда свойства станут прилагательными, описывающими существительное, а методы — глаголами, которые приводят его в действие. Изменение свойства приводит к модификации определенной характеристики внешнего вида или поведения объекта. Вызов одного из методов объекта заставляет последний выполнить какое-либо действие.

Код VBA в этой статье взаимодействует с приложением Office 2010, в котором многие объекты, которыми управляет код, уже настроены и работают; например, сам объект Application, Worksheet в Excel 2010, Document в Word 2010, Presentation в PowerPoint 2010, объекты Explorer и Folder в Outlook 2010. Узнав основную структуру объектной модели и некоторые ключевые свойства объекта Application, которые предоставляют доступ к его текущему состоянию, можно начать расширение приложения Office 2010 с помощью VBA в Office.

Методы

В Word, например, можно изменить свойства и вызвать методы текущего документа Word с помощью свойства ActiveDocument объекта Application. Свойство ActiveDocument возвращает ссылку на объект Document, активный в приложении Word. "Возвращает ссылку на" означает "предоставляет доступ к".

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

Application.ActiveDocument.Save

Прочитайте код слева направо: "В этом приложении (Application) с документом (Document), на который ссылается активный документ (ActiveDocument), вызовите метод сохранения (Save)". Помните, что Save — самая простая форма метода; ему не нужны подробные инструкции от разработчика. Объекту Document дается команда сохранения (Save), а дополнительные данные вводить не нужно.

Если методу требуются дополнительные данные, они называются параметрами. В следующем коде выполняется метод SaveAs, для которого требуется указать новое имя файла.

Application.ActiveDocument.SaveAs ("New Document Name.docx")

Значения, которые указываются в скобках после имени метода — это параметры. Здесь новое имя файла — параметр метода SaveAs.

Свойства

Для задания значения свойства используется такой же синтаксис, что и для чтения значения свойства. В следующем коде выполняется метод для выбора ячейки A1 в Excel 2010 и затем задается свойство для записи данных в ячейку.

    Application.ActiveSheet.Range("A1").Select
    Application.Selection.Value = "Hello World"

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

В первой строке примера кода указан объект Application, на этот раз это приложение Excel 2010, а затем объект ActiveSheet, который предоставляет доступ к активному листу. После этого указан новый термин, Range, который означает "определить диапазон ячеек следующим способом". Код указывает объекту Range создать себя с одной ячейкой A1. Другими словами, в первой строке кода объявляется объект Range и выполняется метод для его выбора. Результат автоматически сохраняется в другом свойстве объекта Application с именем Selection.

Во второй строке кода задается значение свойства Value объекта Selection, равное "Hello World" и отображающееся в ячейке A1.

Самый простой код VBA может предоставлять доступ к объектам в приложении Office и задавать их свойства. Например, можно получить доступ к строкам в таблице Word и изменять их форматирование в скрипте VBA. Это звучит просто, но может быть невероятно полезно; написав такой код, можно освоить всю мощь программирования для внесения одинаковых изменений в несколько таблиц или документов в соответствии с определенной логикой или каким-то условием. Сделать 1000 изменений для компьютера почти то же самое, что 10, поэтому при работе с большими документами и при решении множества проблем VBA может оказаться очень полезен и сэкономить много времени.

Макросы и редактор Visual Basic

Теперь вы кое-что знаете о том, как приложения Office 2010 предоставляют свои объектные модели. Возможно, вам не терпится попробовать вызвать методы объекта, задать его свойства и отреагировать на события объекта. Для этого необходимо написать свой код таким образом, чтобы он распознавался в Office. Обычно это делается с помощью редактора Visual Basic. Несмотря на то, что он установлен по умолчанию, многие пользователи бывают не осведомлены даже о его наличии до тех пор, пока не включат его на ленте.

Открытие вкладки "Разработчик"

Все приложения Office 2010 используют ленту. Одной из вкладок на ленте является вкладка Разработчик, где можно вызвать редактор Visual Basic и другие инструменты разработчика. Поскольку в Office 2010 вкладка Разработчик не показана по умолчанию, необходимо вывести ее на экран, выполнив следующую процедуру.

Включение вкладки "Разработчик"

  1. На вкладке Файл выберите Параметры, чтобы открыть диалоговое окно Параметры.

  2. Щелкните Настройка ленты в левой части диалогового окна.

  3. В разделе Выбрать команды из, расположенном слева в окне, выберите Популярные команды.

  4. В разделе Настройка ленты, который находится справа в диалоговом окне, выберите Основные вкладки в раскрывающемся списке, а затем установите флажок Разработчик.

  5. Нажмите кнопку ОК.

Заметка Примечание

В Office 2007 показ вкладки Разработчик выполняется путем нажатия кнопки Office, выбора пункта Параметры, а затем установки флажка Показать вкладку "Разработчик" на ленте в категории Популярные диалогового окна Параметры.

После включения вкладки Разработчик можно легко найти кнопки Visual Basic и Макросы.

Рисунок 1. Кнопки на вкладке "Разработчик"

Кнопки на вкладке "Разработчик"

Проблемы безопасности

Для защиты пользователей Office 2010 от вирусов и вредоносных макросов нельзя сохранять код макросов в стандартном документе Office 2010 со стандартным расширением файла. Вместо этого следует сохранить код в файле с особым расширением. Например, нельзя сохранить макросы в стандартном документе Word 2010 с расширением DOCX; вместо этого используется специальный документ Word 2010 с использованием макросов с расширением DOCM.

При открытии DOCM-файла система безопасности Office 2010 все равно может запретить запуск макросов в документе, сообщая или не сообщая об этом пользователю. Изучите параметры и настройки центра управления безопасностью во всех приложениях Office 2010. По умолчанию макросы отключены, но пользователь оповещается об этом и может включить их.

Можно указать специальные папки, в которых можно выполнять макросы, создавая надежные расположения, надежные документы или надежных издателей. Самый динамичный способ — использовать надежных издателей, которые работают с документами с цифровыми подписями, распространяемыми пользователями. Для получения дополнительных сведений о параметрах безопасности в определенном приложении Office 2010 в диалоговом окне Параметры щелкните Центр управления безопасностью и выберите Настройки центра управления безопасностью.

Заметка Примечание

Некоторые приложения Office 2010, такие как Outlook 2010, сохраняют макросы по умолчанию в основном шаблоне на локальном компьютере. Хотя такая стратегия уменьшает количество проблем безопасности на компьютере при выполнении собственных макросов, для нее требуется стратегия развертывания для распространения своих макросов.

Запись макроса

Если нажать кнопку Макросы на вкладке Разработчик, открывается диалоговое окно Макрос, которое предоставляет доступ к подпрограммам или макросам VBA, которые можно использовать из определенного документа или приложения. Кнопка Visual Basic открывает редактор Visual Basic, где можно создавать и редактировать код VBA.

Также на вкладке Разработчик в Word 2010 и Excel 2010 размещена кнопка Записать макрос, которая автоматически создает код VBA, позволяющий воспроизводить действия, выполненные пользователем в приложении. Запись макроса — это великолепное средство, которое можно использовать для изучения VBA. Читая сгенерированный код, можно понять язык VBA и объединить знания пользователя и программиста Office 2010. Единственное, что нужно помнить — это то, что сгенерированный код может быть запутанным, так как редактор макросов использует некоторые предположения о намерениях пользователя, которые не всегда точны.

Запись макроса

  1. Откройте Excel 2010, создайте рабочую книгу и щелкните вкладку Разработчик на ленте. Нажмите кнопку Запись макроса и примите все параметры по умолчанию в диалоговом окне Запись макроса, в том числе Macro1 в качестве имени макроса и This Workbook в качестве расположения.

  2. Нажмите кнопку ОК, чтобы начать запись макроса. Заметьте, что текст кнопки изменяется на Остановить запись. Нажмите эту кнопку, когда выполните все записываемые действия.

  3. Щелкните ячейку B1 и введите классическую первую строку программиста: Hello World. Прекратите ввод текста и посмотрите на кнопку Остановить запись; она отключена, так как Excel 2010 ждет, пока пользователь завершит ввод значения ячейки.

  4. Щелкните ячейку B2, чтобы завершить действие в ячейке B1, а затем нажмите кнопку Остановить запись.

  5. Щелкните Макросы на вкладке Разработчик, выберите макрос Macro1, если он еще не выбран, и щелкните Правка, чтобы просмотреть код Macro1 в редакторе Visual Basic.

Рисунок 2. Код макроса в редакторе Visual Basic

Код макроса в редакторе Visual Basic

Код

Созданный макрос должен выглядеть следующим образом.

Sub Macro1()
'
' Macro1 Macro
'
'
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Hello World"
    Range("B2").Select
End Sub

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

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

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

Когда средство записи макроса генерирует код, оно использует сложный алгоритм для определения нужных методов и свойств. Если данное свойство незнакомо, пользователю могут помочь множество ресурсов. Например, в записанном макросе средство записи макроса сгенерировало код, который ссылается на свойство ForumulaR1C1. Не знаете, что это значит?

СоветСовет

Примечание. Помните, что объект Application используется во всех макросах VBA. В записанном коде объект Application. используется в начале каждой строки.

Использование справки разработчика

Выберите ForumulaR1C1 в записанном макросе и нажмите F1. Система справки запустит быстрый поиск, определит, что нужные темы есть в разделе "Разработчик" справки Excel 2010, и укажет свойство FormulaR1C1. Можно щелкнуть ссылку, чтобы прочитать описание свойства, но прежде обратите внимание на ссылку Справочник по объектной модели Excel рядом с нижней частью окна. Щелкните ее, чтобы просмотреть список объектов, которые Excel 2010 использует в объектной модели для описания рабочих листов и их компонентов. Щелкните любой из них, чтобы просмотреть свойства и методы, которые применяются к этому объекту, а также ссылки на другие связанные с ними параметры. Во многих записях справки содержатся короткие примеры кода, которые могут быть полезны. Например, можно перейти по ссылкам в описании объекта Borders, чтобы узнать, как задать границу в VBA.

Worksheets(1).Range("A1").Borders.LineStyle = xlDouble

Редактирование кода

Код с границами отличается от записанного макроса. В объектной модели есть несколько способов адресации любого объекта, ячейки A1 в этом примере, что может вызывать затруднения.

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

Sub Macro1()
    Worksheets(1).Range("A1").Value = "Wow!"
    Worksheets(1).Range("A1").Borders.LineStyle = xlDouble
End Sub
СоветСовет

Используйте копирование и вставку, где это возможно, чтобы избежать опечаток.

Не нужно сохранять код, чтобы запустить его, поэтому вернитесь в документ Excel 2010, щелкните Макросы на вкладке Разработчик, выберите Macro1 и нажмите кнопку Запустить. Теперь в ячейке A1 содержится текст Wow!, а вокруг него размещена граница из двойных линий.

Рисунок 3. Результаты первого макроса

Результаты первого макроса

 

Только что вы записали макрос, прочитали документацию по объектной модели и написали простую программу на VBA, которая что-то делает. Поздравляем!

Программа не работает? Читайте дальше и узнайте о методах отладки в VBA.

Начните с примеров

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

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

Упрощение задачи

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

Ошибки и отладка

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

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

Например, в VBA строковые значения должны быть заключены в двойные кавычки. Чтобы узнать, что происходит при использовании одинарных кавычек, вернитесь в редактор Visual Basic и замените строку "Wow!" на 'Wow!' (т. е. слово Wow в одинарных кавычках). Если щелкнуть следующую строку, среагирует редактор Visual Basic. Сообщение об ошибке "Ошибка компиляции. Ожидается: выражение" не особо помогает, но строка, содержащая ошибку, становится красной, что говорит о синтаксической ошибке в этой строке. В результате программа не будет запускаться.

Нажмите кнопку ОК и измените текст на "Wow!".

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

Например, откройте редактор Visual Basic и измените имя свойства Value на ValueX в макросе, намеренно вызывая ошибку времени выполнения, так как у объекта Range нет свойства ValueX. Вернитесь в документ Excel 2010, откройте диалоговое окно Макрос и запустите Macro1 еще раз. Появится сообщение Visual Basic, в котором описывается ошибка: "Объект не поддерживает это свойство метода". Хотя текст и так понятен, нажмите кнопку "Отладка" для получения дополнительных сведений.

После возвращения в редактор Visual Basic будет включен специальный режим отладки, в котором желтым цветом выделяется строка кода с ошибкой. Как и ожидалось, желтым выделена строка со свойством ValueX.

Рисунок 4. Отладчик Visual Basic работает

Отладчик Visual Basic работает

 

Можно внести изменения в исполняемый код VBA, поэтому измените ValueX на Value и нажмите маленькую зеленую кнопку воспроизведения в меню Отладка. Программа должна запуститься без ошибок.

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

Правильное использование справочных материалов

Чтобы открыть справочник разработчика, встроенный в справку Office 2010, откройте справку в любом приложении Office 2010, щелкнув вопросительный знак на ленте или нажав клавишу F1. Затем справа от кнопки Поиск щелкните стрелку для фильтрации содержимого. Выберите Справочник разработчика. Если в левой панели не отображается содержание, щелкните маленький значок в виде книги, чтобы открыть его, и раскройте справочник по объектной модели.

Рисунок 5. Фильтрация справки разработчика применяется ко всем приложениям Office 2010

Фильтрация по справке разработчика

 

Время, потраченное на исследование справочника по объектной модели, быстро окупится. После изучения основ синтаксиса VBA и объектной модели приложения Office 2010, с которым вы работаете, можно перейти от догадок к методичному программированию.

Конечно, центр разработки Microsoft Office — это прекрасный портал со статьями, советами и форумами сообщества.

Поиск в форумах и группах

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

Если поискать в Интернете "форум разработчиков office", можно найти несколько таких групп обсуждений. Можно поискать "разработка office" или описание проблемы и найти нужные форумы, блоги и статьи.

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

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

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

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

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

  • Будьте вежливы и выражайте благодарность за все ответы.

Хотя это короткая статья, и в ней представлена лишь малая часть сведений о VBA и программировании, надеюсь, ее будет достаточно для начала.

В этом разделе кратко описываются некоторые другие важные темы.

Переменные

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

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

    Dim MyStringVariable As String
    MyStringVariable = "Wow!"
    Worksheets(1).Range("A1").Value = MyStringVariable

Ветвление и циклы

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

Sub Macro1()
    If Worksheets(1).Range("A1").Value = "Yes!" Then
        Dim i As Integer
        For i = 2 To 10
            Worksheets(1).Range("A" & i).Value = "OK! " & i
        Next i
    Else
        MsgBox "Put Yes! in cell A1"
    End If
End Sub

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

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

Создание электронной почты в Outlook 2010

Sub MakeMessage()
    Dim OutlookMessage As Outlook.MailItem
    Set OutlookMessage = Application.CreateItem(olMailItem)
    OutlookMessage.Subject = "Hello World!"
    OutlookMessage.Display
    Set OutlookMessage = Nothing
End Sub

Помните, что бывают случаи, когда нужно автоматизировать электронную почту в Outlook 2010; при этом также можно использовать шаблоны.

Удаление пустых строк из листа Excel 2010

Sub DeleteEmptyRows()    SelectedRange = Selection.Rows.Count    ActiveCell.Offset(0, 0).Select    For i = 1 To SelectedRange        If ActiveCell.Value = "" Then    
            Selection.EntireRow.Delete        Else            ActiveCell.Offset(1, 0).Select        End If    Next iEnd Sub

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

Удаление пустых текстовых полей в PowerPoint 2010

Sub RemoveEmptyTextBoxes()
    Dim SlideObj As Slide
    Dim ShapeObj As Shape
    Dim ShapeIndex As Integer
    For Each SlideObj In ActivePresentation.Slides
        For ShapeIndex = SlideObj.Shapes.Count To 1 Step -1
            Set ShapeObj = SlideObj.Shapes(ShapeIndex)
            If ShapeObj.Type = msoTextBox Then
                If Trim(ShapeObj.TextFrame.TextRange.Text) = "" Then
                    ShapeObj.Delete
                End If
            End If
        Next ShapeIndex
    Next SlideObj
End Sub

Имейте в виду, что в коде выполняется цикл по всем слайдам и удаляются все текстовые поля, в которых нет текста. Переменная-счетчик уменьшается, а не увеличивается на 1, так как при каждом удалении объекта он удаляется из коллекции, что уменьшает счетчик на 1.

Копирование контакта из Outlook 2010 в Word 2010

Sub CopyCurrentContact()
   Dim OutlookObj As Object
   Dim InspectorObj As Object
   Dim ItemObj As Object
   Set OutlookObj = CreateObject("Outlook.Application")
   Set InspectorObj = OutlookObj.ActiveInspector
   Set ItemObj = InspectorObj.CurrentItem
   Application.ActiveDocument.Range.InsertAfter (ItemObj.FullName & " from " & ItemObj.CompanyName)
End Sub

Обратите внимание, что в этом коде открытый в Outlook 2010 контакт копируется в документ Word 2010. Этот код работает, только если в Outlook открыт контакт.

В этой статье представлены вводные сведения о программировании на языке Visual Basic для приложений (VBA) в Office 2010 и описывается, как с помощью VBA можно автоматизировать повторяющиеся задачи.

Показ: