Разное

Vba outlook: Справочник Visual Basic для приложений Outlook (VBA)

Содержание

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

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 2 мин

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

Visual Basic для приложений позволяет вам пользоваться почти всеми преимуществами объектной модели Outlook, включая самый широкий диапазон событий на уровне приложения, без необходимости вызова внешнего приложения (например, другого приложения Microsoft Office или приложения, разработанного с помощью Microsoft Visual Basic). И в отличие от скриптов, разработанных с использованием языка сценариев VBScript, код Outlook в Visual Basic для приложений всегда доступен в приложении; элемент не должен быть открыт для выполнения указанного кода.

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

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

Outlook в настоящий момент поддерживает только один проект Visual Basic для приложений, Проект1. Вы не сможете добавить и запустить в редакторе Visual Basic другой проект одновременно. Project1 хранится на вашем жестком диске в виде VbaProject.OTM; каждый пользователь на одном компьютере может иметь копию VbaProject.OTM, сохраненную для него или для нее. На компьютере под управлением Windows XP VbaProject.OTM <drive>находится в папке :\Documents и Параметры<user>\Application Data\Microsoft\Outlook.

Так как вы можете запустить только один проект Visual Basic для приложений за раз, прежде чем запускать другой проект, необходимо выйти из Outlook, переименовать текущий файл VbaProject.OTM, назвать проект, который вы хотите запустить как VbaProject.OTM и перезапустить Outlook, чтобы запустить нужный вам новый проект. При необходимости вы можете также вручную интегрировать проекты для создания одного VbaProject.OTM, что позволит избежать необходимости наименования и переименования файлов.

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

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

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

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

Как использовать макросы VBA для сообщений в Outlook 2016 и 2019

Данный материал является переводом оригинальной статьи «EasyTweaks : How to write useful macros in Outlook 2016 and 2019 messages».

В Microsoft Office мы используем возможности Visual Basic for Application

(VBA) для создания пользовательских программ, которые расширяют базовую функциональность Office и помогают экономить время за счет автоматизации повторяющихся задач. Мы называем эти небольшие программы VBA-макросами.

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

  • Сначала основы: мы узнаем, как вставить и сохранить простой настраиваемый макрос VBA в активный сеанс Outlook.
  • Затем мы настроим среду разработки макросов.
  • Мы рассмотрим самые простые примеры Outlook VBA. Это поможет вам понять основы разработки макросов и позволит писать простые макросы.
  • Затем мы определим ярлык для нашего макроса на панели быстрого доступа. Это позволит нам легко запускать макрос.
  • И закончим, включив макросы Outlook и обработав их настройки безопасности, чтобы гарантировать, что код действительно будет запускаться при появлении запроса на наших компьютерах.

Можно ли записать макрос в Outlook?

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

Если вам интересно узнать, как на самом деле работает средство записи макросов Office, рекомендуем изучить MS Word Macros и Excel VBA Macro tutorials.


Написание макроса VBA в Outlook
  1. Прежде всего откройте Microsoft Outlook.
  2. Теперь нажмите Alt + F11.
  3. Откроется интегрированная среда разработки (IDE) разработчика VBA.
  4. Разверните дерево проекта до узла ThisOutlookSession.
  5. Щелкните правой кнопкой мыши ThisOutlookSession и нажмите «Вставить».
  6. Теперь вы вставите модуль Visual Basic. Для этого выберите Module.
  7. Вставьте свой код VBA в окно модуля.
  8. Нажмите «File«, затем выберите «Save«.
  9. Далее, закройте среду разработчика. Это вернет вас в пользовательский интерфейс Outlook.

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

Как настроить вкладку разработчика в Outlook?

Если вы часто разрабатываете макросы Outlook, вы можете настроить среду разработки Office. Звучит фантастически, не правда ли? На самом деле это довольно простая процедура. Читайте подробности:

Откройте Outlook, правой кнопкой мыши щелкните на верхней части Ленты (Ribbon) и выберите Customize the Ribbon.

Отметьте пункт Developer и нажмите OK.

Теперь вы найдете меню Developer на Ленте.


Полезные примеры Outlook VBA
Создание электронного сообщения

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

Сценарий начинается с создания почтового элемента Outlook, затем он устанавливает поля «Кому» (To), «Тема» (Subject), «Основной текст» (Body) и «Копия» (CC). Наконец, он отображает сообщение в Outlook, чтобы вы могли просмотреть и отправить его вручную.

Public Sub CreateMail()
Dim MyEmail As MailItem
' Create a new Outlook message item programatically
Set MyEmail = Application.CreateItem(olMailItem)
'Set your new message to, subject, body text and cc fields.
With MyEmail
'Кому
.To = "[email protected]"
'Тема
.Subject = "Insert your message subject here"
'Текст
.Body = "Insert your email text body here"
'Копия
.CC = "[email protected]"
End With
MyEmail.
Display End Sub

Вы можете использовать предопределенные шаблоны Outlook при определении новых писем с помощью VBA. Для этого вам нужно использовать метод CreateItemFromTemplate и указать расположение файла шаблона Outlook (*.oft).

Отправка электронного письма программно

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

MyEmail.Send
Прикрепление файла к электронному письму

Во многих случаях вы хотели бы автоматизировать отправку электронного письма с прикрепленным к нему файлом. Это может быть документ Word, электронная таблица Excel, презентация PowerPoint, документы PDF и т.д.

Если вы хотите программно отправить электронное письмо с вложениями, используйте такой код:

Public Sub CreateMailWAttach()
' VBA Code
Dim MyEmail As MailItem
' Create a new Outlook message item programatically
Set MyEmail = Application.
CreateItem(olMailItem)   'Define your attachment folder path and file name - modify this part as needed Dim AttachFolder, AttachFile As String AttachFolder = "C:\temp\" AttachFile = "Dummy.zip"   'Set your new message to, subject, body text and cc fields. With MyEmail   .To = "[email protected]; [email protected]" .Subject = "This is your message subject" .Body = "Insert your email text body here" .CC = "cc@my_server.com" .Attachments.Add AttachFolder & AttachFile   End With   MyEmail.Display ' MyEmail.Send End Sub

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

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

 

Создание задачи через VBA

Следующий фрагмент кода создает задачу Outlook, назначает ее другому лицу и устанавливает тему задачи и основной текст.

Public Sub CreateTask()   Dim MyTask As TaskItem
' Create a new Outlook task
Set MyTask = Application.
CreateItem(olTaskItem)   'Set your new task recipients and information fields With MyTask .Assign .Recipients.Add "taskrecipient@my_server.com" .Subject = "This is your task subject" .Body = "Insert a thorough explanation of your task here."   End With   MyTask.Display   End Sub

Сохранение в формате HTML

Некоторые читатели спрашивали, как автоматизировать сохранение писем в HTML. Приведенный ниже код выполняет именно это.

Public Sub SaveAsHTML()
On Error Resume Next
Dim MyWindow As Outlook.Inspector
Dim MyItem As MailItem
Dim FilePath As String
FilePath = Environ("HOMEPATH") & "\Documents\" & "\"
Dim ItemName As String
Set MyWindow = Application.ActiveInspector
If TypeName(MyWindow) = "Nothing" Then
MsgBox ("Kindly open an email to save")
Else
Set MyItem = MyWindow.CurrentItem
ItemName = MyItem.Subject ' File name will be identical to the message subject!
With MyItem
.SaveAs FilePath & ItemName & ".html", olHTML
End With
End If
End Sub

Убедитесь, что вы запускаете этот код только в электронных письмах, открытых в Outlook (не в представлении «Входящие»/»Проводник»)!


Вопросы по макросам Outlook
Где в Outlook хранятся макросы?

Вы можете не знать, где именно хранится используемый вами макрос. В отличие от, например, Excel, который позволяет хранить макросы в файле personal.xlb или в определенных электронных таблицах, все макросы Microsoft Outlook хранятся в одном глобальном файле, который называется VBAProject.otm. Файл можно найти по адресу:

C:\users\<your_user_name>\AppData\Roaming\Microsoft\Outlook.

 

Кнопка быстрого доступа для макросов Outlook

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

Откройте Microsoft Outlook, если ещё не открыли.

Щёлкните правой кнопкой мыши на Ленте Outlook и выберите пункт Customize the Quick Access Toolbar.

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

Нажмите Choose commands from комбо-бокс и выберите Macros.

Выберите макрос, который вы создали и нажмите Add.

Нажмите Modify для выбора иконки для вашей кнопки Панели Быстрого Доступа.

По завершении, нажмите OK.

 

Как разрешить выполнение макросов в Outlook?

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

Сперва, нужно разрешить Outlook запускать наш макрос VBA. По умолчанию Microsoft Office отключает макросы и не разрешает их выполнение. Поэтому нам нужно будет определить надлежащую безопасность макросов, чтобы разрешить запуск вашего настраиваемого макроса Outlook.

В Outlook 2016/2019, щелкните Developer на Ленте и выберите Macro security.

Выберите Настройки безопасности макросов.

  • Для Outlook 2016 выберите вариант «Notifications for only digitally signed macros, all other disabled или Notifications for all macros«.
  • Для Outlook 2019 выберите вариант «Disable All Macros with Notification«. Это задействует появление предупреждающего сообщения, требующего одобрения пользователя перед запуском макроса.

После настройки безопасности макросов, нажмите OK.

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


Как использовать макрос Outlook?

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

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

Нажмите значок, который вы назначили для своего макроса.

Вуаля, вы только что завершили и запустили свой (первый) макрос Outlook VBA!

Как упростить рутинные задачи, используя VBA / Хабр

Привет, Хабр! Я Сергей Чебарев, аналитик в команде визуализации данных «Северсталь-инфокома», и сегодня я расскажу, как можно, используя VBA и приложения Office, автоматизировать рутину в работе. VBA (Visual Basic for Applications) – это упрощенная версия Visual Basic, встроенная в множество продуктов Microsoft Office, и соответственно, эти продукты можно подружить между собой.

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

Создание событий в Outlook через Excel

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

Звучит на первый взгляд не очень сложно, но:

  • Приглашения нужно отправлять из общего почтового ящика

  • Тело приглашения должно содержать корпоративный стиль оформления

  • Есть лимит по количеству пользователей на терминальном сервере в сутки, поэтому необходимо следить за количеством событий

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

 Как же упростить эту рутину, используя Excel, Outlook и VBA? Рассказываю​

Распишем действия по шагам. 

1. Создаем книгу Excel и получаем данные из календаря

Используя инструмент «Создать запрос», выбираем источник «Из Microsoft Exchange» и вводим почтовый ящик, где ведутся события. После подключения открывается PowerQuery с данными из почты (сообщения, календарь и прочее). Нам нужны только данные календаря.

 В таблице теперь видны все созданные события, но нам необходимо видеть ещё и дни, где пока нет событий. Для этого мы создаем новый запрос и вызываем функцию List.Dates:

Она нам создаст список дней, начиная с сегодняшнего, на 21 день вперед:

Теперь объединим 2 данных запроса в один. Для этого переводим лист с датами в таблицу с помощью инструмента “В таблицу” на вкладке “преобразование” и переходим на запрос, где мы собрали все приглашения из почты, после чего на вкладке “Главная” выбираем инструмент “Добавить запросы”. Выбираем созданную ранее таблицу с датами и объединяем:

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

Создаем дополнительные столбцы «Subject», «Location» и «Статус брони», которые будут нести информацию о теме события, локации события и о том, из какого запроса пришли данные: если из календаря, то «Бронь», если из вызванной функции — «Свободно». Делаем сведение по столбцу «Статус брони» для определения количества свободных окон по дням и присваиваем статус для возможности бронирования. Закрываем PowerQuery и получаем следующую таблицу:

Отлично! Создав столбец “Окон свободно”, мы освободились от подсчета событий и видим возможность бронирования.

 2. Создание событий в Outlook

Теперь нам необходимо написать скрипт на VBA для создания событий в Outlook. Для этого переходим во вкладку “Разработчик” в Excel и открываем VisualBasic:

 В открывшемся окне выбираем рабочий лист, где находится итоговая таблица по событиям:

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

Для работы с Outlook мы будем использовать функцию GetObject(«Outlook. Application»). GetObject — это функция для приложений VBA. Она используется для прикрепления к запущенным объектам. Более подробно с синтаксисом функции можно ознакомиться в документации Microsoft.
Для соблюдения корпоративного стиля код ищет предыдущее приглашение и копирует из него тело письма. Далее создается новое приглашение, и в него заносится вся необходимая информация.

subjectStr = "Шаблон приглашения" -  ‘Поиск заданного приглашения(шаблона)
 
    For Each oAppointmentItem In objNavFolder.Folder.Items
            If InStr(oAppointmentItem.Subject, subjectStr) > 0 Then
            Set N = oAppointmentItem
            N.Copy ‘Делаем копию шаблона
            N.Display
            N.Location = Cells(b, 2) ‘место  события из ячейки таблицы
            N.Subject = Cells(b, 1) ‘название события из ячейки таблицы
            N.Start = Cells(b, 3) + 0.33333 ‘время начала события
            N.End = Cells(b, 3) + 0.999 ‘время окончания события
            Exit For
        End If
    Next oAppointmentItem


Протестируем. Открываем файл, ищем строку с датой, которая нас интересует, и двойным кликом на статус бронирования запускаем скрипт:

 

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

3. Обновление данных

Чтобы при открытии книги происходило обновление данных, сохраним скрипт в саму книгу:

 

 Кроме того, отключим фоновое обновление в свойствах подключения таблицы:

Подведем итоги

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

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

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

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

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

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

Твиттер LinkedIn Фейсбук Эл. адрес

  • Статья
  • 3 минуты на чтение

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

Visual Basic для приложений позволяет использовать почти все преимущества объектной модели Outlook, включая широкий спектр событий на уровне приложения, без необходимости запуска внешнего приложения (например, другого приложения Microsoft Office или приложения, разработанного с использованием Microsoft Visual Basic). В отличие от сценариев форм, разработанных с использованием Microsoft Visual Basic Scripting Edition (VBScript), код Outlook Visual Basic для приложений всегда доступен в приложении; элемент не обязательно должен быть открыт для запуска кода.

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

Редактор Visual Basic используется для создания и удаления модулей, разработки модулей пользовательских форм и редактирования кода в модулях. Этот редактор предоставляет мощный набор инструментов, включая встроенный обозреватель объектов и отладчик, упрощающий разработку кода и устранение неполадок. Вы даже можете использовать редактор Visual Basic в Outlook для разработки и тестирования кода, который затем можно скопировать в отдельное приложение Visual Basic или приложение Visual Basic для приложений в другом приложении Microsoft Office.

Outlook одновременно поддерживает только один проект Visual Basic for Applications, Project1. Вы не можете одновременно добавить и запустить другой проект в редакторе Visual Basic. Project1 хранится на вашем жестком диске как VbaProject.OTM; у каждого пользователя на одном компьютере может быть сохранена копия VbaProject. OTM. На компьютере под управлением Windows XP файл VbaProject.OTM находится в папке <диск>:\Documents and Settings<пользователь>\Application Data\Microsoft\Outlook.

Поскольку одновременно можно запускать только один проект Visual Basic для приложений, перед запуском другого проекта следует выйти из Outlook, переименовать текущий файл VbaProject.OTM с другим именем файла, назвать проект, который требуется запустить, как VbaProject .OTM и перезапустите Outlook, чтобы запустить его. При необходимости вы также можете вручную интегрировать проекты в один VbaProject.OTM, чтобы избежать именования и переименования файлов.

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

Если вы разрабатываете решение, которое собираетесь распространять среди нескольких человек, вам следует преобразовать код Visual Basic for Applications в надстройку Outlook COM. Однако для разработки надстройки COM обычно требуется гораздо больше знаний в области программирования, чем для создания короткого макроса, поэтому, если ваш проект Visual Basic для приложений относительно прост и не слишком много людей, которым нужно его использовать, вы можете отправить им код с инструкциями по его настройке.

Поддержка и отзывы

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

VBA Outlook | Как отправлять электронные письма из Outlook с помощью кода VBA?

Мы видели VBA в Excel и то, как мы автоматизируем наши задачи в Excel, создавая макросы. В Microsoft Outlook у нас также есть ссылка на VBA, и мы можем управлять Outlook с помощью VBA. Это упрощает автоматизацию повторяющихся задач в Outlook. Как и в Excel, нам нужно включить функцию разработчика, чтобы использовать VBA в Outlook.

Прелесть VBA в том, что мы можем ссылаться на другие объекты Microsoft, такие как PowerPoint, Word и Outlook. Мы умеем создавать красивые презентации. Мы можем работать с документами Microsoft Word. Наконец, мы также можем отправлять электронные письма. Да, вы не ослышались. Мы можем отправлять электронные письма из Excel. Звучит неловко, но в то же время вызывает улыбку на наших лицах. В этой статье показано, как работать с объектами Microsoft Outlook из Excel с помощью кодирования VBA Кодирование VBA Код VBA представляет собой набор инструкций, написанных пользователем на языке программирования приложений Visual Basic в редакторе Visual Basic (VBE) для выполнения определенной задачи. читать далее. Читать дальше.

Содержание
  • VBA Outlook
    • Как мы можем ссылаться на Outlook из Excel?
    • Напишите код для отправки электронных писем из VBA Outlook из Excel
    • Рекомендуемые статьи