Программирование макросов vba

  • 25 минут на чтение

Вы сталкиваетесь с повторяющейся очисткой пятидесяти таблиц в Word? Вы хотите, чтобы конкретный документ запрашивал у пользователя ввод при его открытии? Вам трудно понять. Как эффективно перенести ваши контакты из Microsoft Outlook в электронную таблицу Microsoft Excel?

Вы можете выполнить эти задачи и достичь гораздо большего. Используя Visual Basic for Applications (VBA) для Office—простой. Но мощный язык программирования. Который можно использовать для расширения офисных приложений.

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

Офисный пакет приложений обладает богатым набором функций. Существует множество различных способов создания, форматирования и управления документами. Электронной почтой. Базами данных, формами. Электронными таблицами и презентациями.

Великая сила программирования VBA в Office заключается в том. Что почти каждая операция. Которую вы можете выполнить с помощью мыши. Клавиатуры или диалогового окна. Также может быть выполнена с помощью VBA. Кроме того, если это можно сделать один раз с помощью VBA. Это можно сделать так же легко и сто раз. (На самом деле автоматизация повторяющихся задач является одним из наиболее распространенных применений VBA в Office.)

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

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

Примечание

Заинтересованы в разработке решений, расширяющих возможности Office на нескольких платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office имеют небольшую площадь по сравнению с надстройками и решениями VSTO, и их можно создавать практически с помощью любой технологии веб-программирования, такой как HTML5, JavaScript. CSS3 и XML.

Когда использовать VBA и почему

Существует несколько основных причин для рассмотрения программирования VBA в Office.

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

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

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

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

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

Взаимодействие между офисными приложениями

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

Делать все по-другому

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

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

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

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

Программирование на VBA 101

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

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

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

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

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

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

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

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

Код VBA в этой статье работает с приложением Open Office, где многие объекты. Которыми манипулирует код. Уже запущены; например. Само приложение. Рабочий лист в Excel. Документ в Word. Презентация в PowerPoint. Проводник и объекты папок в Outlook. После того, как вы знаете базовый макет объектной модели и некоторые ключевые свойства приложения. Которые дают доступ к его текущему состоянию. Вы можете начать расширять и манипулировать этим офисным приложением с помощью VBA в Office.

Методы

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

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

Application.ActiveDocument.Save 

Прочитайте код слева направо: Save.Имейте в виду. Что Сохранение-это самая простая форма метода; он не требует от вас никаких подробных инструкций. Вы указываете объекту документа сохранить его, и он больше не требует от вас ввода.

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

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

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

Свойства

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

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

Первая задача в программировании VBA заключается в том. Чтобы получить представление об объектной модели каждого приложения Office и прочитать синтаксис объекта. Метода и свойства. Объектные модели подобны во всех приложениях Office. Но каждая из них специфична для вида документов и объектов. Которыми она управляет.

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

Вторая строка кода устанавливает значение свойства Selection в текст

Самый простой код VBA. Который вы пишете. Может просто получить доступ к объектам в приложении Office. С которым вы работаете. И задать свойства. Например, вы можете получить доступ к строкам таблицы в Word и изменить их форматирование в своем скрипте VBA.

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

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

Теперь, когда вы знаете кое-что о том. Как приложения Office предоставляют свои объектные модели. Вам, вероятно. Не терпится попробовать вызвать методы объекта. Задать свойства объекта и ответить на события объекта. Чтобы сделать это, вы должны написать свой код в таком месте и таким образом. Чтобы Office мог его понять; как правило. С помощью редактора Visual Basic. Хотя он установлен по умолчанию, многие пользователи даже не знают, что он доступен. Пока он не включен на ленте.

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

Чтобы включить вкладку Разработчик

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

  2. Выберите Настроить ленту в левой части диалогового окна.

  3. В разделе Выбор команд из левой части диалогового окна выберите Популярные команды.

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

  5. Выберите OK.

Примечание

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

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

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

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

Вопросы безопасности

Чтобы защитить пользователей Office от вирусов и опасного макрокода. Вы не можете сохранить макрокод в стандартном документе Office. Использующем стандартное расширение файла. Вместо этого вы должны сохранить код в файле со специальным расширением. Например, вы не можете сохранить макросы в стандартном документе Word с расширением .docx; вместо этого вы должны использовать специальный документ Word с поддержкой макросов с расширением .docx.расширение docm.

Когда вы открываете файл .docm. Служба безопасности Office может по — прежнему препятствовать запуску макросов в документе. Сообщая вам об этом или не сообщая. Изучите настройки и параметры Центра доверия для всех офисных приложений. Настройка по умолчанию отключает запуск макросов, но предупреждает вас о том. Что макросы были отключены. И дает вам возможность снова включить их для этого документа.

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

Примечание

Некоторые офисные приложения, такие как Outlook. По умолчанию сохраняют макросы в главном шаблоне на локальном компьютере. Хотя эта стратегия уменьшает локальные проблемы безопасности на вашем собственном компьютере при запуске собственных макросов. Она требует стратегии развертывания. Если вы хотите распространять свой макрос.

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

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

Еще одна кнопка на вкладке Разработчик в Word и Excel-это кнопка Записать макрос, которая автоматически генерирует код VBA. Который может воспроизводить действия. Выполняемые в приложении. Запись Макроса это потрясающий инструмент, который вы можете использовать. Чтобы узнать больше о VBA. Чтение сгенерированного кода может дать вам представление о VBA и обеспечить стабильный мост между вашими знаниями Office как пользователя и знаниями программиста. Единственное предостережение заключается в том. Что сгенерированный код может сбить с толку. Потому что редактор макросов должен сделать некоторые предположения о ваших намерениях. И эти предположения не обязательно точны.

Для записи макроса

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

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

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

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

  5. Выберите Макрос на вкладке Разработчик, выберите Макрос1, если он не выбран. А затем выберите Изменить, чтобы просмотреть код из Макроса 1 в редакторе 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, а затем строка Кавычки вокруг текста указывают строковое значение. А не числовое.

Помните, как вы выбрали ячейку B2, чтобы снова отобразить кнопку остановки записи? Это действие также отображается в виде строки кода. Макрос-рекордер записывает каждое нажатие клавиши.

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

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

Примечание

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

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

Выберите FormulaR1C1 в записанном макросе и нажмите клавишу F1. Справочная система выполняет быстрый поиск, определяет. Что соответствующие темы находятся в разделе Excel Developer справки Excel. И перечисляет свойство FormulaR1C1. Вы можете выбрать ссылку, чтобы узнать больше об этом свойстве. Но перед этим обратите внимание на ссылку Ссылка на объектную модель Excel в нижней части окна. Выберите ссылку, чтобы просмотреть длинный список объектов. Которые Excel использует в своей объектной модели для описания листов и их компонентов.

Выберите любой из них, чтобы увидеть свойства и методы, применимые к этому конкретному объекту. А также перекрестные ссылки на различные связанные параметры. Многие справочные записи также содержат краткие примеры кода. Которые могут вам помочь. Например, вы можете перейти по ссылкам в объекте 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, выберите Макросы на вкладке Разработчик, выберите Macro1, а затем выберите Выполнить. Ячейка A1 теперь содержит текст Wow! и имеет двойную линию границы вокруг него.

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

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

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

Не получилось? Читайте дальше для получения предложений по отладке в VBA.

Советы и рекомендации по программированию

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

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

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

Сделайте задачу проще

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

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

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

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

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

Выберите OK и измените текст обратно на

Ошибки времени выполнения труднее поймать. Потому что синтаксис программирования выглядит правильным. Но код терпит неудачу. Когда VBA пытается его выполнить.

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

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

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

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

Хорошо используя справочные материалы

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

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

Фильтрация в справке разработчика применяется ко всем офисным приложениям

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

Конечно, Центр разработчиков Microsoft 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! — Да! и запустите его снова. Чтобы увидеть силу зацикливания. Этот фрагмент кода демонстрирует переменные, ветвление и циклирование. Внимательно прочтите его после того, как увидите в действии, и попытайтесь определить. Что происходит при выполнении каждой строки.

Все мои офисные приложения: пример кода

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

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

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

Имейте в виду. Что есть ситуации. В которых вы можете захотеть автоматизировать электронную почту в Outlook; вы также можете использовать шаблоны.

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

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 i End Sub 

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

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

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 

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

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

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 в открытый документ Word. Этот код работает только в том случае, если в Outlook в данный момент открыт контакт для проверки.

Поддержка и обратная связь

У вас есть вопросы или отзывы о Office VBA или этой документации? Пожалуйста, ознакомьтесь с разделом Office VBA support and feedback для получения рекомендаций о том. Как вы можете получать поддержку и предоставлять обратную связь.