示例:Outlook 中的面试确认电子邮件。
亲爱
[A]
的,
您的采访[B]
已确认[C]
。地址是[D]
。
谢谢你,
约翰·多伊
A
- 名字
B
- 公司名称
C
- 日期和时间
D
- 实际地址
我见过人们为此使用 Excel,但我希望能够在某处输入A
、和值,单击发送,仅此而已B
。C
D
我遇到的所有代码都可以实现可变因素,但几乎没有任何电子邮件正文的代码,如果有,它们都没有包含 .oft 文件。
您的问题意味着您期望找到一些完全符合您要求的代码。也许这是不公平的批评,但许多人似乎确实希望他们的确切要求已经存在,或者有人为他们编写代码。
如果我有一个需要对我来说是新功能的专业知识的需求,我会分别研究每个领域,然后进行试验,然后再尝试使用我的新知识来满足我的需求。
您的要求所需的第一个知识是创建一个电子邮件模板文件。我假设您已经知道如何做到这一点,但如果不知道,有很多网站解释了如何做到这一点。我用名称“StdMsg.oft”保存了我的模板。您将需要修改我的宏以将您的名字用于您的模板。
您可以将电子邮件模板文件保存在任何地方,但最好使用默认位置,以便所有模板都放在一起。当您想要打开模板时,您的宏需要知道它在哪里。对于 Windows 10,默认位置是“C:\Users\xxxxx\AppData\Roaming\Microsoft\Templates”,其中“xxxxx”是您的用户名。您可以输入此字符串,但如果您希望与同事共享此宏,您可能希望向系统询问“xxxxx”的当前值。我很容易找到一个给我默认位置的网站,但找到一个告诉我如何获取“xxxxx”值的网站更加困难。我发现很多网站告诉我如何获得“xxxxx”的价值,但大多数都是错误的或假设读者可能不知道的知识。我保留了一个名为“Resources”的文件夹,其中包含 Html、Css、VBAExcel、VBAOutlook 和 VBAGeneral。这些子文件夹包含记录我不太可能记住的有用片段的文本文件。建议你创建一个类似的文件夹,记录下我是如何得到“xxxxx”的值的。
接下来,您需要打开电子邮件模板文件。我发现很多网站都显示了如何从 Excel 中执行此操作,但我没有找到一个网站显示如何从 Outlook 中正确执行此操作。在 Excel 中,您必须创建一个 Outlook 应用程序对象。在 Outlook 中,您已经在 Outlook 应用程序对象中,因此您无需创建另一个。事实上,您不能创建新的 Outlook 应用程序对象,因为 Outlook 只允许运行其自身的一个版本。如果您尝试创建一个新的 Outlook 应用程序对象,您将获得对已在运行的副本的引用。同样,您可能希望将此信息记录在资源文件夹中。
我曾经InputBox
从用户那里获取四个值。如果我为自己或客户编写此宏,我会使用表单。如果您已经知道,很难展示如何创建一个会浪费精力的表单。
打开电子邮件模板后,您可以访问其所有属性。这个网站和其他地方有很多答案,展示了如何修改电子邮件的 html 或文本正文。我假设您想发送 html 电子邮件,所以我修改了 html 正文。
我的宏会显示已编辑的电子邮件,但如果您不想在发送前检查电子邮件,您可以使用它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