Как отправить электронное письмо, используя шаблон MS Outlook (.oft), в сочетании со значениями переменных, вставленными в тело письма (через Excel или иным способом) - PullRequest
0 голосов
/ 24 мая 2019

Пример: электронное письмо с подтверждением интервью в Outlook.

Уважаемый [A],
Ваше интервью с [B] подтверждено для [C]. Адрес: [D].
Спасибо,
Джон Доу

A-Имя
Название B-Company
C-дата и время
D-физический адрес

Я видел, как люди используют Excel для этого, но я хочу иметь возможность просто где-то вводить значения A, B, C и D, нажимать кнопку отправки и все.

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

1 Ответ

0 голосов
/ 30 мая 2019

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

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

Первое знание, необходимое для вашего требования, это создать файл шаблона электронной почты. Я предполагаю, что вы уже знаете, как это сделать, но, если нет, есть много сайтов, которые объясняют, как это сделать. Я сохранил свой шаблон с именем «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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...