Ваш вопрос подразумевает, что вы ожидали найти код, который точно соответствует вашим требованиям. Возможно, это несправедливая критика, но многие люди, похоже, ожидают, что их точное требование уже существует или кто-то может написать его для них.
Если у меня есть требование, которое требует опыта с новыми для меня функциональными возможностями, я исследую каждую область отдельно, а затем экспериментирую, прежде чем пытаться использовать мои новые знания для удовлетворения моих требований.
Первое знание, необходимое для вашего требования, это создать файл шаблона электронной почты. Я предполагаю, что вы уже знаете, как это сделать, но, если нет, есть много сайтов, которые объясняют, как это сделать. Я сохранил свой шаблон с именем «StdMsg.oft». Вам нужно изменить мой макрос, чтобы использовать ваше имя для вашего шаблона.
Вы можете сохранить файл шаблона электронной почты в любом месте, но, вероятно, лучше использовать местоположение по умолчанию, чтобы все ваши шаблоны были вместе. Если вы хотите открыть шаблон, ваш макрос должен знать, где он находится. Расположение по умолчанию для Windows 10 - «C: \ Users \ xxxxx \ AppData \ Roaming \ Microsoft \ Templates», где «xxxxx» - ваше имя пользователя. Вы можете напечатать эту строку, но, если вы хотите поделиться этим макросом с коллегами, вы можете запросить у системы текущее значение «xxxxx». Я легко нашел сайт, который дал мне местоположение по умолчанию, но найти сайт, который сказал мне, как получить значение «ххххх», было сложнее. Я нашел множество сайтов, которые рассказывали мне, как получить значение «ххххх», но большинство из них были неправы или предполагали, что читатель может не иметь. Я храню папку с именем «Ресурсы» с подпапками, такими как Html, Css, VBAExcel, VBAOutlook и VBAGeneral. Эти подпапки содержат текстовые файлы, содержащие полезные фрагменты, которые я вряд ли запомню. Я предлагаю вам создать похожую папку и записать, как я получил значение «xxxxx».
Далее вам нужно открыть файл шаблона электронной почты. Я нашел множество сайтов, которые показали, как это сделать из Excel, но я не нашел ни одного сайта, который показал бы, как это сделать правильно из Outlook. Из Excel вы должны создать объект приложения Outlook. Из Outlook вы уже находитесь в объекте приложения Outlook, поэтому вам не нужно создавать другой. Фактически вы не можете создать новый объект приложения Outlook, потому что Outlook позволяет запускать только одну его версию. Если вы пытаетесь создать новый объект приложения Outlook, вам дается ссылка на уже запущенную копию. Снова вы можете записать эту информацию в папку ресурсов.
Я использовал InputBox
для получения четырех значений от пользователя. Я бы использовал форму, если бы писал этот макрос для себя или клиента. Трудно показать, как создать форму, которая была бы напрасной тратой усилий, если вы уже знаете.
Когда шаблон электронной почты открыт, у вас есть доступ ко всем его свойствам. На этом сайте и в других местах есть много ответов, которые показывают, как изменить html или текст сообщения электронной почты. Я предполагаю, что вы хотите отправлять html-письма, поэтому я изменил html body.
Мой макрос отображает отредактированное электронное письмо, но вы можете использовать Send
вместо Display
, если вы не хотите проверять электронную почту до ее отправки.
Sub SendStdMsgOft()
Dim Address As String
Dim CompanyName As String
Dim DateAndTime As String
Dim FirstName As String
Dim NewEmail As MailItem
Dim PathFileName As String
PathFileName = Environ("AppData") & "\Microsoft\Templates\StdMsg.oft"
Set NewEmail = CreateItemFromTemplate(PathFileName)
FirstName = InputBox("First name")
CompanyName = InputBox("Company name")
DateAndTime = InputBox("Date And Time")
Address = InputBox("Address")
With NewEmail
.HtmlBody = Replace(.HtmlBody, "[A]", FirstName)
.HtmlBody = Replace(.HtmlBody, "[B]", CompanyName)
.HtmlBody = Replace(.HtmlBody, "[C]", DateAndTime)
.HtmlBody = Replace(.HtmlBody, "[D]", Address)
.Display
End With
End Sub