Як написати корисні макроси в повідомленнях Outlook 2016 і 2019?
Вперше в роботі з макросами VBA для автоматизації Outlook? Дізнайтеся, як вставити код VBA в Outlook 365 / 2016 / 2019.
Оновлено: серпень 2021 р.; Застосовується до Microsoft Outlook 365 / 2019 / 2016
Ось замітка, яку ми отримали від читача.
Дякуємо за вашу дуже корисну допомогу з програмування Outlook. Мені цікаво, чи можете ви поділитися кодом, який допоможе автоматизувати надсилання електронної пошти в Outlook? Я знаю, що є кілька способів надсилання повторюваних повідомлень, але я спеціально зацікавлений у використанні VBA для цього завдання.
Дякую за запитання. Автоматичне надсилання електронних листів, здається, є одним з найбільш корисних і популярних завдань, які можна автоматизувати за допомогою VBA. Читайте далі, щоб отримати докладнішу інформацію та простий сценарій, щоб почати тут.
Написання VBA для надсилання електронних листів Outlook
У досить простому прикладі нижче ми розглянемо наступні кроки:
Ось простий код VBA для автоматичного створення та надсилання простих електронних листів. Зауважте, що вам потрібно легко покращити цей сценарій, включивши в нього вкладені файли, завдання тощо, але давайте почнемо з дуже простого сценарію.
Sub SendMail()
Dim MyEmail As MailItem
Set MyEmail = Application.CreateItem(olMailItem)
With MyEmail
.To = ""
.Importance = olImportanceHigh
.Subject = ""
.Body = ""
.BodyFormat = olFormatHTML
.Display
End With
'I purposely commented the next line, uncomment it by removing the "'" sign to send your email.
' MyEmail.Send
End Sub
Ярлик макросу Outlook VBA
Можливо, ви захочете зв’язати код VBA, який ви щойно написали, з командною кнопкою в Outlook. Це дозволить вам легко запустити його з ярлика, розміщеного на стрічці Outlook.
Ось як це зробити:
Можливі проблеми з налаштуваннями макросу VBA
Можливо, для запуску макросів потрібно буде налаштувати параметри макросу Outlook. Якщо так, ось як це зробити.
У PowerShell ви можете використовувати командлет Send-MailMessage для надсилання електронної пошти. Однак він вимагає автентифікації на поштовому сервері, і він не підтримує сучасні методи автентифікації, такі як OAuth і Microsoft Modern Authentication. Тому набагато простіше надіслати електронний лист, якщо на вашому комп’ютері налаштовано профіль Outlook.
Ось приклад сценарію PowerShell, який зчитує дані з файлу Excel і використовує профіль Outlook для надсилання електронного листа до кожен користувач:
# відкрити файл Excel
$ExcelObj = New-Object -comobject Excel.Application
$ExcelWorkBook = $ExcelObj.Workbooks.Open("C:\PS\user_list.xlsx")
$ExcelWorkSheet = $ExcelWorkBook.Sheets.Item("Sheet1")
# Отримати кількість заповнених рядків у файлі xlsx
$rowcount=$ExcelWorkSheet.UsedRange.Rows.Count
# Перегляньте всі рядки в стовпці 1, починаючи з другого рядка (ці клітинки містять імена користувачів та електронну пошту).
for($i=2;$i -le $rowcount;$i++){
$useremail = $ExcelWorkSheet.Columns.Item(1).Rows.Item($i).Text
$FullUsername = $ExcelWorkSheet.Columns.Item(2).Rows.Item($i).Text
$Status = $ExcelWorkSheet.Columns.Item(4).Rows.Item($i).Text
$pwdchange = $ExcelWorkSheet.Columns.Item(3).Rows.Item($i).Text
# Створення основного тексту повідомлення
$strSubj = " Статус вашого облікового запису в домені woshub.com "
$strBody = "Шановний " + $FullUsername
$strBody = $strBody + " `r`n Ваш обліковий запис у домені woshub.com знаходиться в " + $Status
$strBody = $strBody + "`r`n Дата й час останньої зміни пароля: " + $pwdchange
$strfile="C:\ps\" + $useremail + ".txt"
# Ми припускаємо, що Outlook запущено, якщо це не так, вам потрібно буде запустити його за допомогою команди $outlook = new-object -comobject outlook.application
$outlook = [Runtime.InteropServices.Marshal]::GetActiveObject("Outlook.Application")
$email = $outlook.CreateItem(0)
$email.To = $useremail
$email.Subject = $strSubj
$email.Body = $strBody
# Додайте файл (за потреби)
$email.Attachments.add($strfile)
#надішліть повідомлення електронною поштою
$email.Send()
}
$ExcelWorkBook.close($true)
Цей сценарій PowerShell передбачає, що Outlook запущено на вашому комп’ютері. Сценарій генерує тему та текст електронного листа для кожної SMTP-адреси одержувача у файлі XLSX і вкладає файл. Потім надсилає електронний лист.
Вперше в роботі з макросами VBA для автоматизації Outlook? Дізнайтеся, як вставити код VBA в Outlook 365 / 2016 / 2019.
Дізнайтеся, як легко копіювати події календаря Outlook, зустрічі та зустрічі в Office 365, 2016 і 2019.
Дізнайтеся, як ви можете розробляти та створювати власні форми користувача Outlook.
Вхідні папки Outlook не оновлюються автоматично? Дізнайтеся, як автоматично оновлювати папку "Вхідні" Outlook 365 / 2019 / 2016 / 2013.
Дізнайтеся, як додати/вставити та надіслати зображення gif у вихідну електронну пошту Outlook 2016 та 2019.
Дізнайтеся, як діагностувати та усунути різні проблеми відключення клієнта Microsoft Outlook у Windows 10.
Навчіться писати макроси Outlook для автоматизації надсилання електронної пошти.
Дізнайтеся, як вимкнути нагадування та сповіщення з календарів Outlook 2016/2019 як у Windows, так і на MAC.
Дізнайтеся, як підвищити продуктивність Outlook.
Ця публікація допоможе вам змінити пароль облікового запису Outlook.com і синхронізувати вашу Windows на всіх ваших пристроях.