Разное

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

Содержание

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

  • Чтение занимает 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.

Управление несколькими проектами Visual Basic для приложений

Outlook в настоящий момент поддерживает только один проект Visual Basic для приложений, Проект1. Вы не сможете добавить и запустить в редакторе Visual Basic другой проект одновременно. Project1 хранится на вашем жестком диске в виде VbaProject.OTM; каждый пользователь на одном компьютере может иметь копию VbaProject.OTM, сохраненную для него или для нее. На компьютере под управлением Windows XP, VbaProject.OTM находится в каталоге: :\Documents and Settings<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 и обратная связь.

Automating Outlook from a Visual Basic Application

  • Чтение занимает 2 мин

В этой статье

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

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

Чтобы начать сеанс автоматизации Outlook, можно использовать раннее или позднее связывание. При позднем связывании для инициализации Outlook используется либо функция Visual Basic GetObject , либо функция CreateObject . Например, в приведенном ниже коде указывается объектная переменная для объекта Application приложения Outlook, являющегося объектом наивысшего уровня в объектной модели Outlook. В коде автоматизации сначала нужно определить объект Application приложения Outlook, чтобы обеспечить доступ к любому другому объекту Outlook.

Dim objOL as Object 
Set objOL = CreateObject("Outlook.Application")

Чтобы использовать раннее связывание, сначала нужно указать ссылку на библиотеку объектов Outlook. Используйте команду «Справка» в меню «Сервис» Visual Basic для приложений (VBA), чтобы задать ссылку на

библиотеку объектов Microsoft Outlook XX. x, где XX. x представляет версию Outlook, с которой вы работаете. Затем можно использовать указанный ниже синтаксис, чтобы начать сеанс Outlook.

Dim objOL as Outlook.Application 
Set objOL = New Outlook.Application

Большинство программных решений взаимодействуют с данными, хранящимися в Outlook. Outlook сохраняет все свои сведения в виде элементов в папках. Папки находятся в одном или нескольких хранилищах. После того как вы задаете объектную переменную в объект Application , вы, как правило, задаете объект пространства имен для ссылки на MAPI, как показано в следующем примере.

Set objOL = New Outlook.Application 
Set objNS = objOL.GetNameSpace("MAPI") 
Set objFolder = objNS.GetDefaultFolder(olFolderContacts)

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

Sub CreateNewDefaultOutlookTask() 
    Dim objOLApp As Outlook.Application 
    Dim NewTask As Outlook.TaskItem 
    ' Set the Application object 
    Set objOLApp = New Outlook.Application 
    ' You can only use CreateItem for default items 
    Set NewTask = objOLApp.CreateItem(olTaskItem) 
    ' Display the new task form so the user can fill it out 
    NewTask.Display 
End Sub

Если для создания макросов используется VBA, автоматизировать Outlook можно двумя способами. Можно реализовать макрос, который создает новый экземпляр объекта приложения Outlook. Выше в методе CreateNewDefaultOutlookTask() показано, как вызвать объект New Outlook.Application, чтобы создать экземпляр объекта Application.

Внимание! Этот новый экземпляр Outlook не является доверенным и может инициировать защиту объектной модели.

В качестве альтернативы созданию и автоматизации отдельного экземпляра Outlook можно с помощью VBA реализовать макрос, который автоматизирует текущий экземпляр Outlook. Для этого используйте объект приложения , встроенный в среду. Этот объект Application является доверенным и может помочь избежать запуска защиты объектной модели. Дополнительные сведения о защите объектной модели см. в статье Новые возможности для разработчиков в Outlook 2007 (часть 1 из 2). В приведенном ниже примере показано использование методом CreateAnotherNewDefaultOutlookTask() объекта Application из текущего экземпляра Outlook.

Sub CreateAnotherNewDefaultOutlookTask() 
    Dim NewTask As Outlook.TaskItem 
 
    ' You can only use CreateItem for default items 
    Set NewTask = Application.CreateItem(olTaskItem) 
    ' Display the new task form so the user can fill it out 
    NewTask.Display 
End Sub

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

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

Управление и распространение проектов Outlook Visual Basic для приложений (VBA) — Outlook

  • Чтение занимает 2 мин
  • Применяется к:
    Outlook 2016, Outlook 2013, Microsoft Outlook 2010

В этой статье

Исходный номер КБ:   290779

Сводка

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

Дополнительные сведения

В отличие Microsoft Office других программ Outlook поддерживает только один проект VBA одновременно. Макрос VBA хранится в файле с именем VbaProject.OTM. Этот файл является файлом хранения продуктов и не предназначен для распространения. Outlook не предоставляет прямых средств управления файлами OTM. Код Outlook VBA не предназначен для развертывания или распространения. Она была разработана исключительно для личной среды разработки макроса. Проект Project1 доступен и всегда связан с программой. Невозможно добавить другой проект в редактор Visual Basic.

Project1 хранится на жестком диске как VbaProject.otm в следующей папке:

<Drive>:\Users \ <LogonName> \AppData\Roaming\Microsoft\Outlook

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

  1. Закройте приложение Outlook.
  2. Найдите файл VbaProject.otm в указанный путь.
  3. Переименуй файл в нечто значимое для вас, например VbaProject-testing.otm.
  4. Перезапустите Outlook.

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

  1. Закройте приложение Outlook.
  2. Найдите файл VbaProject.otm.
  3. Переименуй файл в нечто значимое для вас, например VbaProject-testing.otm.
  4. Восстановим имя файла, который теперь необходимо использовать в качестве VbaProject.otm.
  5. Перезапустите Outlook.

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

Важно!

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

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

Как создать свое правило в VBA для Microsoft Outlook? Событие ItemAdd для папки Входящие

Как создать свое правило в VBA для Microsoft Outlook? Событие ItemAdd для папки Входящие

написано в рубрике: Microsoft Outlook — Outlook Blogger @ Пт 18. 08.2006 16:00

Одним из огромных преимуществ Microsoft Outlook перед другими почтовиками несомненно является наличие встроенного VBA for Application. Т.е. простого интерпретатора языка VBScript, с помощью которого можно обращаться к объектной модели Microsoft Outlook и творить с ним многое, если не всё. Если Вы немного владеете Бейсиком, то Вам будет вполне по силам написать свой обработчик для правил сортировки, значимость которых трудно переоценить.

 

Итак, создаем свое собственное правило на VBScript которое пересылает на определенный адрес письма, попадающие в папку Входящие до 9 утра и после 5 вечера. Заходим в меню Сервис/Макрос/Редактор Visual Basic и выбираем Проект1/Microsoft Office Outlook Objects/ThisOutlookSession:

Далее вставляем в область кода следующую программу:

Public WithEvents myOlItems As Outlook.Items

Public Sub Application_Startup()

‘ Reference the items in the Inbox. Because myOlItems is declared

‘ «WithEvents» the ItemAdd event will fire below.

Set myOlItems = Outlook.Session.GetDefaultFolder(olFolderInbox).Items

End Sub

Private Sub myOlItems_ItemAdd(ByVal Item As Object)

‘ If it’s currently not between 9:00 A.M. and 5:00 P.M.

If Time() < #9:00:00 AM# Or Time() > #5:00:00 PM# Then

‘ Check to make sure it is an Outlook mail message, otherwise

‘ subsequent code will probably fail depending on what type

‘ of item it is.

If TypeName(Item) = «MailItem» Then

‘ Forward the item just received

Set myForward = Item.Forward

‘ Address the message

myForward.Recipients.Add «support(ат)positic.ru»

‘ Send it

myForward.Send

End If

End If

End Sub

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

Для работы VBA кода проверьте, что макросы разрешены для выполнения в меню Сервис/Макрос/Безопасность. Если же редактор VBA совсем не открывается, то стоит проверить соответствующую надстройку VBA for Application в меню Сервис/Параметры/Дополнительно/Дополнительно/COM Надстройки.

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

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

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

Откройте новое сообщение в Outlook по Excel VBA

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

Есть ли возможность создать макрос, который откроет новое сообщение в Outlook? Так что я смогу вставить свой текст. Я могу написать макрос, который отправит его непосредственно из Excel, но это не то, что я действительно хочу, так как некоторая часть отчетности должна быть выполнена путем просмотра чисел вручную.

Заранее большое спасибо!

vba excel outlook


6

Я нашел этот, и он работает отлично!!!!

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

Sub CustomMailMessage()
Dim OutApp As Outlook. Application
Dim objOutlookMsg As Outlook.MailItem
Dim objOutlookRecip As Recipient
Dim Recipients As Recipients

  Set OutApp = CreateObject("Outlook.Application")
  Set objOutlookMsg = OutApp.CreateItem(olMailItem)

  Set Recipients = objOutlookMsg.Recipients
  Set objOutlookRecip = Recipients.Add("[email protected]")
  objOutlookRecip.Type = 1

  objOutlookMsg.SentOnBehalfOfName = "[email protected]"
  objOutlookMsg.Subject = "Testing this macro"
  objOutlookMsg.HTMLBody = "Testing this macro" & vbCrLf & vbCrLf
  'Resolve each Recipient's name.
  For Each objOutlookRecip In objOutlookMsg.Recipients
    objOutlookRecip.Resolve
  Next
  'objOutlookMsg.Send
  objOutlookMsg.Display

  Set OutApp = Nothing  
End Sub


4

Я не могу проверить это сейчас, но это будет идти, как это:

set o = createObject("Outlook.Application")
set m = o.CreateItem(olMailItem) ' replace it with 0 if you get error here
o.show ' or .Display - not sure

Вы можете установить o.To, o.Subject и т. д. перед его отображением. Извините, что он не протестирован, но у меня нет Outlook на моем домашнем компьютере, я использую его только на работе. Я проверю его завтра, если правильно запомнил.

Как отфильтровать электронную почту Outlook, используя правило со сценарием VBA?

Я посмотрел высоко и низко для всех этих частей, необходимых для создания этого простого фильтра. Фильтры Unix procmail настолько просты в использовании. Все мастера Microsoft Outlook мешают простому фильтру с использованием подстановочных знаков. Хотя многие условия фильтрации электронной почты, которые Microsoft предоставляет по умолчанию, полезны, ничто не может сравниться с гибкостью и настройкой выполняемого кода.

  1. Напиши свой код.

Alt-F11 вызывает редактор кода VBA. Дважды щелкните по ThisOutlookSession. Напиши свой код. В моем случае он использует регулярное выражение в строке темы и перемещает его не в DefaultFolder, а в мой собственный pst в подпапке.

Sub filter(Item As Outlook.MailItem)
    Dim ns As Outlook.NameSpace
    Dim MailDest As Outlook.Folder
    Set ns = Application.GetNamespace("MAPI")
    Set Reg1 = CreateObject("VBScript.RegExp")
    Reg1.Global = True
    Reg1.Pattern = "(.*Abc.20.*)"
    If Reg1.Test(Item.Subject) Then
        Set MailDest = ns.Folders("Personal Folders").Folders("one").Folders("a")
        Item.Move MailDest
    End If
End Sub
  1. Запустите код для каждого входящего письма с правилом.

Под правилами выберите «Управление правилами и оповещениями …». Новое правило будет выглядеть

Apply this rule after the message arrives run Project1.ThisOutlookSession.filter

Чтобы получить это, для шага 1: выберите условия: просто нажмите «Далее». Подтвердите, что это относится ко всем сообщениям, нажав OK. В поле «Выберите действие (я)» установите флажок «запустить сценарий», затем щелкните, чтобы выбрать сценарий фильтра, и нажмите «Далее» или «Готово». Для выбора исключений нажмите кнопку «Далее» или «Готово». Дайте ему хорошее имя, например, vba-filter, и установите флажок Включить это правило. нажмите Готово. Так как он справляется с локальной папкой, нажмите OK, когда он попросит подтвердить, что это правило не будет работать для электронной почты, которую вы проверяете онлайн или с другого устройства. Нажмите кнопку ОК в диалоговом окне «Правила и предупреждения».

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

Как экспортировать задачи Outlook в Excel с VBA

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

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

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

Если вы следите за моим письмом здесь, то вы знаете, что в прошлом я освещал такие вещи, как интеграция функций веб-браузера в Excel

, автоматически максимизируя окна приложения

или автоматизировать обновление диаграмм в Excel

,

Итак, в этой статье я расскажу о другой задаче автоматизации — фактически, которую я часто использовал в последнее время — для автоматического обновления электронной таблицы Excel со всеми оставшимися активными задачами Outlook в конце дня.

Подача задач Outlook в электронную таблицу Excel

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

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

Для этого примера, вот мой примерный список задач Outlook с 5 оставшимися задачами, которые я еще не выполнил.

Все, что мы собираемся делать здесь, в VBA. В Outlook вы попадаете в редактор VBA, нажав «Инструменты», затем «Макрос» и затем выбрав «Редактор Visual Basic».

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

Dim strReport As String
Dim olnameSpace As Outlook.NameSpace
Dim taskFolder As Outlook.MAPIFolder
Тусклые задачи как Outlook.Items
Dim tsk As Outlook.TaskItem
Dim objExcel As New Excel. Приложение
Dim exWb As Excel.Workbook
Дим шт как Excel.Worksheet
Dim strMyName As String
Dim x As Integer
Dim y As Integer
Установите exWb = objExcel.Workbooks.Open ("c: \ temp \ MyActiveTasks.xls")
'exWb.Sheets (strMyName). Удалить
'exWb.Sheets.Add (strMyName)
Установите olnameSpace = Application.GetNamespace ("MAPI")
Установите taskFolder = olnameSpace.GetDefaultFolder (olFolderTasks)
Set tasks = taskFolder.Items
strReport = ""
Создать заголовок
exWb.Sheets ("Sheet1"). Ячейки (1, 1) = "Тема"
exWb.Sheets ("Sheet1"). Ячейки (1, 2) = "Срок оплаты"
exWb.Sheets ("Sheet1"). Ячейки (1, 3) = "Процент завершен"
exWb.Sheets ("Sheet1"). Ячейки (1, 4) = "Статус"

[/ NOEDIT]

Итак, вот как выглядит новая электронная таблица. Ваше приложение Outlook только что создало новый файл Excel с именем «MyActiveTasks.xls» в каталоге C: \ temp и создало заголовок для задач, которые вы собираетесь вставить.

Итак, теперь пришло время извлечь ваши задачи и вставить их в файл Excel. Я использую переменную «y», начинающуюся с двух, чтобы убедиться, что первая используемая строка не первая, потому что я не хочу перезаписывать заголовок.

у = 2
Для х = 1 к задачам. Счет
Установите tsk = tasks.Item (x)
'strReport = strReport + tsk.Subject + ";"
Заполните данные
Если не цк.полный то
exWb.Sheets ("Ryan"). Ячейки (y, 1) = tsk.Subject
exWb.Sheets ("Ryan"). Ячейки (y, 2) = tsk.DueDate
exWb.Sheets ("Ryan"). Ячейки (y, 3) = tsk.PercentComplete
exWb.Sheets ("Ryan"). Ячейки (y, 4) = tsk.Status
у = у + 1
Конец, если
Следующий х

[/ NOEDIT]

Этот сценарий выполняет поиск по всему списку элементов задач в Outlook, проверяет, завершен ли еще элемент, а если нет, то вставляет информацию о задачах в 4 ячейки электронной таблицы. Если вы хотите, вы можете вставить больше информации. Просто выясните, какая информация о задании доступна, набрав «tsk», а затем просмотрите список всплывающих свойств.

Теперь вот как выглядит лист.

Будучи немного перфекционистом, все еще есть проблема. Заметьте, как столбец А обрезал тему последнего задания? Мне это не нравится. Итак, давайте добавим немного больше кода для автоматического подбора всех столбцов в таблице Excel.

'Подгонка всех столбцов ширины
Для каждого шт в ActiveWorkbook.Worksheets
sht.Columns ( "А"). EntireColumn.AutoFit
sht.Columns ( "B"). EntireColumn.AutoFit
sht.Columns ( "С"). EntireColumn.AutoFit
sht.Columns ( "D"). EntireColumn.AutoFit
Следующая шт
exWb.Save
exWb.Close
Установить exWb = ничего

[/ NOEDIT]

Методы «Сохранить» и «Закрыть» в этих последних нескольких строках сохранят лист и закроют его, чтобы приложение не блокировалось приложением, иначе будет трудно открыть файл Excel, пока вы не закроете Outlook.

Итак, вот как выглядит готовая таблица.

Когда вы устанавливаете скрипт для запуска? Ну, я настроил его на запуск по событию «Application.Close ()», которое запускается при выходе из Outlook в конце дня. Это заставит Outlook создать отчет по таблицам Excel в конце дня, и все это само по себе.

Можете ли вы вспомнить какие-нибудь другие интересные применения этой техники? Может быть, автоматически запускать электронную почту со списком задач или выводить их в файл HTML и отправлять по FTP на ваш веб-сервер?

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

Shutterstock

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

  • 3 минуты на чтение

В этой статье

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

Visual Basic для приложений позволяет вам использовать почти все преимущества объектной модели Outlook, включая широкий спектр событий на уровне приложений, без необходимости запускать внешнее приложение (например, другое приложение Microsoft Office или приложение, разработанное с использованием Microsoft Visual Базовый). И в отличие от сценариев форм, разработанных с использованием 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.

Управление несколькими Visual Basic для проектов приложений

Outlook поддерживает только один проект Visual Basic для приложений, Project1, одновременно. Вы не можете одновременно добавлять и запускать другой проект в редакторе Visual Basic. Project1 хранится на вашем жестком диске как VbaProject.ОТМ; каждый пользователь на одном компьютере может иметь копию 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 для приложений в надстройку Outlook COM. Однако для разработки надстройки COM обычно требуется значительно больше знаний в области программирования, чем для создания короткого макроса, поэтому, если ваш проект Visual Basic для приложений относительно прост и не так много людей, которым нужно его использовать, вы можете отправить им код с инструкциями по его настройке.

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

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

Отправлять электронные письма Outlook с макросами VBA

Обновлено: июнь 2020 г .; Применимо к Microsoft Outlook 365/2019/2016

Вот записка, которую мы получили от читателя.

Спасибо за вашу очень полезную помощь по написанию кода для Outlook.Мне интересно, можете ли вы поделиться кодом, который поможет автоматизировать отправку электронной почты в Outlook? Я знаю, что есть несколько способов отправить повторяющееся сообщение, но я особенно заинтересован в использовании VBA для этой задачи.

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

Написание VBA для отправки электронных писем Outlook

В довольно простом примере ниже мы рассмотрим следующие шаги:

  1. Во-первых, мы воспользуемся объектной моделью VBA Outlook для создания нового элемента электронной почты.
  2. Затем мы продолжим и установим важность сообщения, получателей (разделенных точкой с запятой), а также стиль и содержание основного текста.
  3. Затем мы отобразим сообщение в вашем приложении Microsoft Outlook.
  4. Наконец, мы отправим его получателям.

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

  Sub SendMail ()
Заменить MyEmail как MailItem
Установите MyEmail = Application.CreateItem (olMailItem)

С MyEmail
.To = "<введите адрес электронной почты получателя / ess здесь>"
.Importance = olImportanceHigh
.Subject = "<введите здесь тему своего электронного письма>"
.Body = "<введите здесь текст сообщения электронной почты>"
.BodyFormat = olFormatHTML
.Отображать
Конец с

'Я намеренно прокомментировал следующую строку, раскомментируйте ее, удалив знак "" ", чтобы отправить свое электронное письмо.
'MyEmail.Send
Концевой переводник  

Ярлык макроса Outlook VBA

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

Вот как это сделать:

  1. Сначала откройте Microsoft Outlook.
  2. Нажмите «Файл», затем выберите «Параметры».
  3. Теперь перейдите и выберите «Настроить ленту».
  4. В разделе «Настроить ленту» вы увидите поле со списком «Выбрать команды из».
  5. Выберите макросы
  6. Затем выберите вновь созданный код VBA, в нашем случае имя должно быть SendMail.
  7. Затем нажмите «Добавить», а затем «ОК». При желании вы можете назначить своему макросу значок.
  8. Ваш макрос будет доступен на панели быстрого доступа в верхнем левом углу приложения Outlook.

Возможные проблемы с настройками макроса VBA

Для запуска макросов может потребоваться настройка параметров макроса Outlook. Если да, то вот как это сделать.

макросов Outlook VBA — VBOffice

Бесплатные макросы VBA для Microsoft® Outlook®.Получите более 100 готовых сценариев или используйте образцы в качестве шаблона для собственного программирования.

Репортер
VBOffice Reporter — это простой в использовании инструмент для анализа данных и создания отчетов в Outlook. Например, одним щелчком мыши можно увидеть количество часов, запланированных для встреч в следующем месяце.
Доступ к электронной почте с помощью CDO 1.21

До Outlook 2003 библиотека CDO 1.21 предлагала функции, которых не было в объектной модели Outlook.

Последнее изменение: 01.01.2006

Доступ к заголовку сообщения электронной почты

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

Последнее изменение: 18.07.2009

Добавить день рождения

Этот макрос добавляет дни рождения ваших контактов в календарь.

Последнее изменение: 22.01.2018

Добавить дату в позиции курсора

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

Последнее изменение: 13.06.2019

Таймер API

Таймер позволяет вам вызывать ваш код через определенные промежутки времени.

Последнее изменение: 18.01.2006

Архивировать элементы календаря

Узнайте, как создать собственное автоматическое архивирование для папок Outlook.

Последнее изменение: 2007/02/07

Назначьте форму элементу

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

Последнее изменение: 23.09.2009

Назначьте категории электронной почты перед отправкой

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

Последнее изменение: 24.04.2007

Автоматическая категоризация новой встречи

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

Последнее изменение: 23.09.2009

Блокируйте время в пути для ваших встреч

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

Последнее изменение: 01.01.2014

Массовое редактирование контактов

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

Последнее изменение: 2016/12/06

Массовое изменение срока выполнения для нескольких элементов задачи

В этом примере мы перемещаем срок выполнения для нескольких элементов задачи за один раз.

Последнее изменение: 23.07.2013

Массовое изменение приоритета для нескольких элементов задачи

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

Последнее изменение: 15.01.2008

Автоматическая категоризация писем

Пусть сценарий классифицирует каждое новое электронное письмо.

Последнее изменение: 01.02.2007

Изменение шрифта в представлении папки

Вы хотите изменить шрифт просмотра текущей папки? Этот пример работает для Outlook 2007 и более поздних версий.

Последнее изменение: 22.02.2012

Проверьте размер электронного письма перед отправкой

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

Последнее изменение: 18.01.2006

Цветовая метка для элементов календаря

Для Outlook XP и 2003 встречи можно было пометить, но не с помощью объектной модели Outlook. Посмотрите, как установить цветовую метку по коду.

Последнее изменение: 02.05.2007

Подтвердите встречу по электронной почте

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

Последнее изменение: 24.08.2010

Подтвердить перед переносом встречи

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

Последнее изменение: 02.10.2014

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

В этом примере копируются папки Outlook без их содержимого.

Последнее изменение: 2017/12/17

Копировать просмотры папок

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

Последнее изменение: 05.05.2006

Копировать многострочные адреса

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

Последнее изменение: 14.08.2015

Создайте новую панель команд с помощью одной кнопки

Пример создания собственной панели инструментов в Outlook 2007 (или более ранней версии) с помощью командных кнопок.

Последнее изменение: 01.01.2006

Создать новую запись журнала на основе существующей

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

Последнее изменение: 2007/04/03

Создайте Redemption SafeMailItem

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

Последнее изменение: 21.05.2006

Создать серийный номер

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

Последнее изменение: 01.01.2006

Создать набор подпапок

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

Последнее изменение: 06.05.2015

Создавайте автоматические последующие задачи

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

Последнее изменение: 26.11.2016

Создавать автоматически новые элементы журнала для звонков

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

Последнее изменение: 22.11.2007

Создать список рассылки для категории контактов

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

Последнее изменение: 12.03.2015

Создание вложенных списков рассылки

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

Последнее изменение: 2008/01/08

Удалить отметку о отслеживании электронного письма после завершения

Скрипт полностью снимает флаг после завершения элемента.

Последнее изменение: 15.03.2007

Удалить сразу несколько вложений

Удалите вложения нескольких выбранных писем за один раз.

Последнее изменение: 08.08.2012

Удалять исходное письмо при ответе

Нажав «Ответить», вы можете автоматически удалить исходное письмо.

Последнее изменение: 26.09.2006

Удалите прочитанное письмо и откройте следующее

Посмотрите, как открыть следующее электронное письмо и удалить только что прочитанное.

Последнее изменение: 2007/01/08

Удаление напоминаний о встречах

Вас беспокоит, если для каждого входящего приглашения на собрание установлено напоминание? В этом примере напоминание удаляется при поступлении запроса.

Последнее изменение: 17.08.2007

Определите папку для отправленных элементов

Получите несколько примеров того, как сохранить отправленное сообщение в папке, отличной от папки «Отправленные» по умолчанию.

Последнее изменение: 27.10.2017

Определите положение курсора

Поскольку объектная модель Word доступна в Outlook, вы можете установить курсор в определенное положение в сообщении.

Последнее изменение: 24.03.2011

Менеджер категории
С помощью Category-Manager вы можете группировать свои категории Outlook, делиться ими с другими пользователями, фильтровать папки по категориям, автоматически классифицировать новые электронные письма и многое другое.Вы можете использовать надстройку даже для IMAP.
Отображение классификатора исходящих писем

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

Последнее изменение: 13.10.2008

Отображение количества вложений

Вы можете видеть в почтовом ящике, есть ли в письме вложения. Однако вы не можете увидеть количество вложений. Этот макрос добавляет эту информацию к каждому входящему электронному письму.

Последнее изменение: 06.06.2015

Диалоговое окно параметров отображения перед отправкой

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

Последнее изменение: 19.01.2006

Показать адрес электронной почты получателя

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

Последнее изменение: 2018/02/03

Отображение адреса отправителя в Outlook 2000

Этот макрос позволяет получить адрес отправителя даже в старых версиях Outlook.

Последнее изменение: 05.05.2006

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

Узнайте, как редактировать параметры просмотра папки.

Последнее изменение: 18/11/2009

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

Посмотрите, как быстро редактировать тему полученных писем.

Последнее изменение: 01.10.2016

Редактировать Интернет-формат для контакта

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

Последнее изменение: 11.09.2006

Отредактируйте список получателей перед отправкой

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

Последнее изменение: 02.02.2010

Вставить изображения в электронное письмо

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

Последнее изменение: 24.08.2015

Очистить папку

Удалите содержимое папки одним щелчком мыши.

Последнее изменение: 2017/01/10

Выполнить код после завершения задачи

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

Последнее изменение: 13.04.2007

Развернуть все папки

В этом примере раскрывается весь список папок.

Последнее изменение: 2017/03/17

Развернуть подпапку при получении нового сообщения

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

Последнее изменение: 23.05.2013

Экспорт адресов электронной почты

Эти образцы экспортируют адреса отправителей или получателей выбранных писем.

Последнее изменение: 28.04.2017

Найдите папку по ее имени

Не помните, где найти данную папку? С помощью этого скрипта вы можете найти папку по ее имени.

Последнее изменение: 09.09.2016

Найдите окно с помощью Win32 Api

Это демонстрирует, как получить дескриптор окна с помощью Win32 API.

Последнее изменение: 05.02.2006

Найдите адрес в CC и переместите электронную почту

Этот образец находит адрес в списке получателей, а затем перемещает электронное письмо.

Последнее изменение: 23/11/2009

Найдите электронные письма по той же теме

Используйте VBA для поиска всех писем на одну и ту же тему.

Последнее изменение: 26.01.2017

СЭМ
Определите «идентичность» ваших электронных писем. Задайте с помощью SAM отправителя и папку для отправленных элементов с помощью правил.
Пометить электронное письмо для отслеживания

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

Последнее изменение: 2018/05/07

Форматирование телефонных номеров

Пример последовательного форматирования телефонных номеров ваших контактов.

Последнее изменение: 24.12.2013

Получите учетную запись электронной почты по умолчанию

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

Последнее изменение: 2006/11/09

Получить папку сообщений

Где хранится сообщение, которое вы просматриваете? Этот макрос сообщает вам и даже может открыть для вас папку.

Последнее изменение: 2008/06/08

Получить версию Outlook

Этот макрос сообщает вам, какая версия Outlook запущена.

Последнее изменение: 01.01.2014

Получите счет-получатель

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

Последнее изменение: 17.05.2006

GetSelectNamesDialog Предварительное заполнение поля поиска

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

Последнее изменение: 2018/11/20

Скрыть панель команд при запуске

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

Последнее изменение: 15.08.2009

Скрыть текст в электронной почте

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

Последнее изменение: 25.05.2016

Сколько у вас назначений на сегодня?

Образец дает вам количество встреч или встреч в данный день.

Последнее изменение: 01.01.2006

Вставить отформатированную таблицу Excel в электронное письмо

Пример того, как вставить таблицу из Excel и сохранить ее форматирование.

Последнее изменение: 29.01.2007

Inspector Wrapper: получение событий из нескольких писем

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

Последнее изменение: 2004/04/04

Присоединиться к записи о встрече с контактными данными

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

Последнее изменение: 07.09.2015

Присоединяйтесь к электронной почте с контактными данными

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

Последнее изменение: 30.03.2015

Ограничьте размер петель

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

Последнее изменение: 2006/12/02

Свяжите элемент контакта с другими элементами

В этом примере объясняется свойство Links, которое используется для присоединения к любому элементу (элемент задачи, элемент контакта и т. Д.)) с другими предметами.

Последнее изменение: 26.02.2014

Рекурсивный цикл по папкам и подпапкам

Эти примеры демонстрируют основы рекурсивного цикла по папкам и их подпапкам.

Последнее изменение: 28.03.2015

Создайте свою собственную модальную форму на фоне других процессов

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

Последнее изменение: 05.02.2006

Назначение имени вложения в качестве темы сообщения

Посмотрите, как автоматически отображать имя вложения в качестве темы сообщения.

Последнее изменение: 25.11.2016

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

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

Последнее изменение: 15.09.2008

Отметить сразу несколько сообщений как спам

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

Последнее изменение: 06.12.2013

Объединить беседы по электронной почте

В этом примере показано, как объединить любые электронные письма в одну беседу.

Последнее изменение: 27.10.2016

Перемещение завершенных писем

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

Последнее изменение: 18.01.2006

Переместить электронные письма в папку нежелательной почты

В этом примере пустые электронные письма автоматически перемещаются в папку нежелательной почты.

Последнее изменение: 23.06.2017

NewInspector и Inspector_Activate

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

Последнее изменение: 2007/03/20

Открыть и сохранить файлы

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

Последнее изменение: 01.01.2006

Откройте настраиваемую форму с помощью собственной ленты

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

Последнее изменение: 13.10.2010

Откройте файл Excel из Outlook

Открывайте часто используемые файлы одним щелчком мыши прямо из Outlook.

Последнее изменение: 01.08.2015

Открыть выбранные элементы

Это макрос для открытия всех выбранных элементов.

Последнее изменение: 31.01.2017

Исходящие не отправляет

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

Последнее изменение: 21.09.2015

Приостановить выполнение кода

В Excel есть функция остановки выполнения кода на определенное время, которая отсутствует в Outlook. Узнайте, как использовать функцию сна Win32 API.

Последнее изменение: 2007/07/20

Поместите курсор в сообщение

С помощью объектной модели Outlook нельзя установить фокус на конкретный элемент управления. В этом примере показано, как это сделать с помощью Win32 API.

Последнее изменение: 30.01.2006

Автоматическая печать вложений

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

Последнее изменение: 2017/09/11

Параметры автоматического архивирования печати

Узнайте, как создать список настроек автоархивирования для всех папок и подпапок Outlook.

Последнее изменение: 21.12.2016

Автоматическая печать писем

В этом образце печатается каждое новое электронное письмо.

Последнее изменение: 24.03.2007

Распечатать первую страницу электронного письма

Этот пример демонстрирует, как распечатать только определенные страницы вместо всего электронного письма.

Последнее изменение: 12.10.2015

Запросить пропущенную тему перед отправкой

Еще один пример того, как проверить определенные свойства перед отправкой электронного письма.

Последнее изменение: 19.06.2008

Очистить удаленные сообщения IMAP

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

Последнее изменение: 19.02.2008

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

Outlook 2013 автоматически добавляет скобки вокруг кода города. Этот сценарий удаляет скобки.

Последнее изменение: 03.10.2015

Удалить текст из темы электронного письма

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

Последнее изменение: 13.02.2015

Удаление кавычек с отправителя

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

Последнее изменение: 05.01.2016

Ответ на электронное письмо с помощью шаблона

В этом примере объясняются основы ответа с помощью шаблона.

Последнее изменение: 19.01.2006

Запросить уведомление о прочтении электронной почты

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

Последнее изменение: 13.05.2020

Ассистент правил и нижний регистр

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

Последнее изменение: 14.03.2015

Запустить правила сейчас Однако правила

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

Последнее изменение: 07.05.2015

Правило запуска сценария

Это объясняет основы написания макросов, которые могут выполняться правилом.

Последнее изменение: 2006/12/11

Сохранение писем в файловой системе

Образец сохраняет входящие сообщения электронной почты как файлы * .msg в файловой системе.

Последнее изменение: 19.01.2006

Сохранение нескольких вложений в файловую систему

Этот образец сохраняет вложения всех выбранных писем в файловую систему.

Последнее изменение: 29.07.2012

Поиск адреса в поле «Кому» и выполнение правила

Outlook может запустить правило, если вы единственный получатель электронной почты. Этот макрос запускает правило, если вы единственный получатель в поле «Кому», независимо от того, сколько других адресов указано в поле «Копия».

Последнее изменение: 24.07.2015

Модель безопасности, часть 1

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

Последнее изменение: 18/12/2007

Модель безопасности, часть 2

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

Последнее изменение: 2007/12/19

Отправляйте себе копии каждого электронного письма

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

Последнее изменение: 17.11.2009

Отправить документ Word как вложение

Узнайте, как отправить документ из Word, не блокируя окно Outlook.

Последнее изменение: 14.10.2014

Отправить все файлы из папки

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

Последнее изменение: 11.05.2015

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

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

Последнее изменение: 25.02.2017

Отправить и удалить электронную почту

Отправлять определенные электронные письма без сохранения копии в папке «Отправленные».

Последнее изменение: 2006/12/06

Отправить задержку

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

Последнее изменение: 2016/12/01

Повторить все
ReplyAll предупреждает вас перед тем, как непреднамеренно ответить всем, или если вы являетесь конфиденциальным получателем скрытой копии электронного письма.
Автоматическая отправка новых встреч по электронной почте

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

Последнее изменение: 2006/11/10

Установите дату истечения срока действия электронной почты

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

Последнее изменение: 21.09.2007

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

Этот сценарий показывает, сколько членов имеет данный список рассылки.

Последнее изменение: 2006/12/03

Сортировать контакты по дню рождения

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

Последнее изменение: 01.02.2013

Предложить адреса электронной почты

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

Последнее изменение: 11.06.2015

Инициируйте действия с категориями

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

Последнее изменение: 02.11.2016

Используйте макрос Word в Outlook

Outlook не имеет средства записи макросов, однако вы также можете использовать многие макросы, записанные в Word, в Outlook.

Последнее изменение: 06.09.2012

outlook-vba — Начало работы с outlook-vba

В этом разделе представлен обзор того, что такое outlook-vba, и почему разработчик может захотеть его использовать.

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

Дополнительные темы

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

Начиная с Outlook 2003, были введены новые функции, к которым программисты захотят / должны будут иметь доступ. Предполагается, что для описания этой функциональности будут написаны «расширенные темы».

Введение

В настоящее время существует три темы, посвященные Outlook VBA, и планируется еще как минимум три.

Часть 1 описывает, как получить доступ к редактору Visual Basic.

Если вы являетесь пользователем Outlook 2003 и Excel VBA, вы мало что узнаете об этой части, поскольку доступ к редактору Outlook Visual Basic аналогичен доступу к редактору Excel Visual Basic.

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

Части 2 и 3 описывают хранилища и папки, в которых Outlook хранит данные. Вы можете думать о них как о эквиваленте книг и листов Excel. Разделение на части 2 и 3 несколько условно.Часть 2 описывает магазины и папки и включает макросы для отображения имен всех доступных магазинов и папок верхнего уровня в этих магазинах. Часть 3 включает макрос для доступа к папкам нижнего уровня. Одна пара макросов использует рекурсию, которую новый программист может счесть трудным для понимания. Читатель должен стремиться понять весь код в Части 2. Однако было бы законным понять, что делает эта пара макросов, но не понимать, как они достигают своей цели.

Часть 4, следующая часть, которая будет написана, представит MailItems , которые содержат электронные письма.Часть 3 включает макрос для перемещения папки от одного родителя к другому, но большинство макросов работают с объектами, содержащимися в папках, а не с самими папками. Судя по вопросам переполнения стека, MailItems представляют наибольший интерес для программистов.

Часть 5 представит CalendarItems , которые содержат встречи. В части 6 будет представлено создание новых книг Excel из Outlook, а также чтение и обновление существующих книг. В Части 7 будут представлены События, если не будет определена какая-либо более важная тема.

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

Outlook Visual Basic для приложений

Visual Basic для приложений (VBA) — это макроязык, лежащий в основе всех продуктов Microsoft Office, и он практически идентичен для всех продуктов Office.От продукта к продукту отличается объектная модель. В Excel есть книги, листы и ячейки. В Access есть таблицы и атрибуты. В Outlook есть папки, электронные письма и встречи. Именно объектная модель отличает Excel VBA от Outlook VBA.




VBA Отправка сообщений электронной почты из Excel через Outlook

Функция SendActiveWorksheet (strTo As String, strSubject As String, Optional strCC As String, Optional strBody As String) As Boolean

On Error GoTo eh

‘объявить переменные для хранения необходимых объектов

Dim wbDestination As Workbook

Dim strDestName As String

Dim wbSource As Workbook

Dim wsSource As Worksheet

Dim OutApp As Object

Dim OutMail As Object

Dim strTempName As String

Dim strTempName As String

Dim strTempPeas String

Dim strTempPeas String

Dim strTempPeas String

Dim strTempPext сначала создайте целевую книгу

Задайте wbDestination = Workbooks.Добавить

strDestName = wbDestination.Name

‘установить исходную книгу и лист

Установить wbSource = ActiveWorkbook

Установить wsSource = wbSource.ActiveSheet

‘ скопировать активный лист в новую книгу

wsSource.Copy After: = (strDestName) .Sheets (1)

‘сохранить с временным именем

strTempPath = Environ $ («temp») & «\»

strTempName = «Список, полученный из» & wbSource.Name & «.xlsx»

С wbDestination

.SaveAs strTempPath & strTempName

‘теперь отправьте электронную почту целевой книге

Set OutApp = CreateObject («Outlook.Application»)

Set OutMail = OutApp.CreateItem (0)

With OutMail

.To = strTo

.Subject = strSubject

.Body = strBody

.Attachments.Add wbDestination.FullName

‘используйте send для немедленной отправки или display для отображения на экране

.Display ‘или .Display

End With

.Close False

End With

‘ удалить временную книгу, которую вы прикрепили к своей почте

Kill strTempPath & strTempName

‘очистить объекты, чтобы освободить память

Set wbDestination = Nothing

Set wbSource = Nothing

Set wsSource = Nothing

Set OutMail = Nothing

Set OutApp = Nothing

Exit Function

eh:

MsgBox Err.Описание

Конечная функция

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

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

VBA Outlook

Прелесть VBA в том, что мы можем ссылаться на другие объекты Microsoft, такие как PowerPoint, Word и Outlook.Мы умеем создавать красивые презентации. Мы можем работать с документом Microsoft Word и, наконец, можем отправлять электронные письма. Да, вы не ослышались. Мы можем отправлять электронные письма из самого Excel. Это звучит неловко, но в то же время вызывает улыбку на нашем лице. В этой статье я покажу вам, как работать с объектом Microsoft Outlook из Excel, используя кодировку VBA. Читайте дальше…

Вы можете свободно использовать это изображение на своем веб-сайте, в шаблонах и т. Д. Пожалуйста, предоставьте нам ссылку с указанием авторства Ссылка на статью по гиперссылке
Например:
Источник: VBA Outlook (wallstreetmojo.com)

Как ссылаться на Outlook из Excel?

Помните, Outlook — это объект, и нам нужно установить ссылку на него в библиотеке ссылок на объекты. Чтобы установить объект Outlook в качестве ссылки, выполните следующие действия.

Шаг 1: Перейдите в редактор Visual Basic.

Шаг 2: Перейдите в Инструменты> Справка.

Шаг 3: В приведенных ниже ссылках в библиотеке объектов прокрутите вниз и выберите «MICROSOFT OUTLOOK 14.0 ОБЪЕКТНАЯ БИБЛИОТЕКА ».

Установите флажок «БИБЛИОТЕКА ОБЪЕКТОВ MICROSOFT OUTLOOK 14.0» , чтобы сделать его доступным для Excel VBA.

Теперь мы можем получить доступ к объекту Outlook VBA из Excel.

Написать код для отправки электронных писем из VBA Outlook из Excel

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

Шаг 1: Создайте подпроцедуру.

Код:

.
 Опция Явная

Sub Send_Exails ()

Концевой переводник 

Шаг 2: Определите переменную как VBA Outlook.Application .

Код:

.
 Опция Явная

Sub Send_Exails ()

  Dim OutlookApp как Outlook.Application

Концевой переводник 

Шаг 3: Вышеупомянутая переменная ссылается на приложение VBA Outlook. В Outlook нам нужно отправлять электронные письма, поэтому определите другую переменную как Outlook.MailItem.

Код:

.
 Опция Явная

Sub Send_Exails ()

  Dim OutlookApp как Outlook.Application
  Dim OutlookMail как Outlook.MailItem

Концевой переводник 

Шаг 4: Теперь обе переменные являются объектными переменными. Нам нужно их установить. Сначала установите для переменной «OutlookApp» значение New Outlook.Application .

Код:

.
 Sub Send_Exails ()

  Dim OutlookApp как Outlook.Application
  Dim OutlookMail как Outlook.MailItem

  Установите OutlookApp = New Outlook.Application.

Концевой переводник 

Шаг 5: Теперь установите вторую переменную «OutlookMail», как показано ниже.

Установить OutlookMail = OutlookApp.CreateItem (olMailItem)

Код:

.
 Sub Send_Exails ()

  Dim OutlookApp как Outlook.Application
  Dim OutlookMail как Outlook.MailItem

  Установите OutlookApp = New Outlook.Application.
  Установите OutlookMail = OutlookApp.CreateItem (olMailItem)

Концевой переводник 

Шаг 6: Теперь используется оператор With для доступа к VBA Outlook Mail.

Код:

.
 Sub Send_Exails ()

  Dim OutlookApp как Outlook.Application
  Dim OutlookMail как Outlook.MailItem

  Установите OutlookApp = New Outlook.Application.
  Установите OutlookMail = OutlookApp.CreateItem (olMailItem)

  С OutlookMail

  Конец с

Концевой переводник 

Теперь мы можем получить доступ ко всем элементам, доступным с такими элементами электронной почты, как «Тело электронного письма», «Кому», «Копия», «Скрытая копия», «Тема» и многим другим.

Шаг 7: Теперь внутри оператора with мы можем увидеть список IntelliSense, поместив точку .

Шаг 8: Сначала выберите формат тела как olFormatHtml .

Код:

.
 с OutlookMail
    .BodyFormat = olFormatHTML

Конец с 

Шаг 9: Теперь отображает сообщений электронной почты.

Код:

.
 с OutlookMail
  .BodyFormat = olFormatHTML
  .Отображать
Конец с 

Шаг 10: Теперь нам нужно написать письмо в теле письма.Для этого выберите HtmlBody .

Код:

.
 с OutlookMail
  .BodyFormat = olFormatHTML
  .Отображать
  .HTMLBody = "Напишите здесь свой адрес электронной почты"
Конец с 

Ниже приведен пример текста электронного письма.

Шаг 11: После написания электронного письма нам нужно указать идентификатор электронной почты получателя. Для этого доступа: «».

Шаг 12: Затем укажите, для кого вы хотите отправить CC по электронной почте.

Шаг 13: Теперь упомяните идентификаторы электронной почты BCC ,

Шаг 14: Далее нам нужно указать тему в отправляемом нами электронном письме.

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

Шаг 16: Наконец, отправьте электронное письмо с помощью метода отправки .

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

Чтобы использовать приведенный ниже код, необходимо установить ссылку на объект «MICROSOFT OUTLOOK 14.0 OBJECT LIBRARY » в библиотеке объектов Excel VBA.

При установке ссылки на объект библиотека называется ранним связыванием. Причина, по которой нам нужно установить ссылку на библиотеку объектов, потому что без установки библиотеки объектов как «MICROSOFT OUTLOOK 14.0 OBJECT LIBRARY», Мы не можем получить доступ к списку IntelliSense свойств и методов VBA.Это затрудняет написание кода, потому что вам нужно быть уверенным в том, что вы пишете, с точки зрения техники и написания.

 Sub Send_Emails ()
'Этот код является ранним связыванием, т.е. в Инструменты>
Ссылка> У вас установлен флажок "БИБЛИОТЕКА ОБЪЕКТОВ MICROSOFT OUTLOOK 14.0"

  Dim OutlookApp как Outlook.Application
  Dim OutlookMail как Outlook.MailItem

  Установите OutlookApp = New Outlook.Application.
  Установите OutlookMail = OutlookApp.CreateItem (olMailItem)
  
  С OutlookMail
    .BodyFormat = olFormatHTML
    .Отображать
    .HTMLBody = "Dear ABC" & "
" & "
" & "Найдите прикрепленный файл" & .HTMLBody 'last .HTMLBody включает подпись от outlook. ''
включает разрывы строк ч / б две строки .To = "[email protected]" .CC = "[email protected]" .BCC = "[email protected]; [email protected]" .Subject = "Тестовое письмо" .Attachments = ThisWorkbook .Послать Конец с Концевой переводник

Рекомендуемые статьи

Это руководство по VBA Outlook.Здесь мы узнаем, как отправлять электронные письма из Outlook, используя коды VBA, а также примеры и загружаемый шаблон. Ниже приведены несколько полезных статей в Excel, связанных с VBA —

. Обучение VBA (3 курса, 12+ проектов)