VBA使用OFT模板从Excel发送电子邮件 - 禁止自动签名

时间:2014-08-04 19:49:50

标签: excel vba outlook-vba

我创建了一个宏,可以打开一个Outlook电子邮件模板,供用户发送(从电子表格中提取一些其他信息)。一切顺利,但Outlook会根据用户设置自动附加签名。虽然我可以很容易地关闭自己的签名,但我不是唯一可能正在运行此宏的人。

电子邮件模板中已有公司签名,因此不需要添加个人签名。

Google提供了很多关于将签名发送到VBA生成的电子邮件的建议,但我找不到任何可以让它们关闭的建议。有什么想法吗?

现有代码:

... snip ...

Set otlApp = CreateObject("Outlook.Application")
Set otlNewMail = otlApp.CreateItemFromTemplate("\\Path\To\MyFile.oft")

With otlNewMail
.Bcc = vEmailsFromSpreadsheet '(set earlier on)
.Display
End With

'otlApp.Quit
Set otlNewMail = Nothing
Set otlApp = Nothing
Set otlAttach = Nothing
Set otlMess = Nothing
Set otlNSpace = Nothing

2 个答案:

答案 0 :(得分:4)

@JoeMalpass,

我知道这是一个老帖子,但为了其他任何可能偶然发现的人的利益......

通过阅读您的解决方案,我了解到问题是当您在从模板创建的电子邮件中使用.Display时,Outlook会附加签名。由于这是唯一的问题,我想到解决方案可能比你提出的解决方案简单得多。

在原始帖子的代码中,您只需 替换

    .Display

<强>与

    BodyWithoutSignature = .HTMLBody
    .Display
    .HTMLBody = BodyWithoutSignature

由于.Display附加了您不想要的签名,只需将该主体替换为添加签名之前的内容即可。我对它进行了测试,并且(感到惊讶)它确实有效。就这么简单!

答案 1 :(得分:3)

好的,经过多次搜索,我想出了一种方法,通过将一系列类似的解决方案结合到不同的问题来实现我想要做的事情。

我了解到,只要您没有.Display电子邮件,就不会添加自动用户签名。因此,您可以打开(不显示)电子邮件模板,将所需的正文,主题和其他电子邮件参数从模板电子邮件复制到VB变量中。然后,可以使用这些变量值来覆盖您希望.Display给用户的电子邮件的部分内容。

这是我的最终代码:

Set otlApp = CreateObject("Outlook.Application")
Set otlNewMail = otlApp.CreateItemFromTemplate("\\Path\to\myfile.oft")
With otlNewMail
vTemplateBody = otlNewMail.HTMLBody
vTemplateSubject = otlNewMail.Subject
.Close 1
End With

Set otlApp = CreateObject("Outlook.Application")
Set otlNewMail = otlApp.CreateItem(0)
With otlNewMail
.Display
.SentOnBehalfOfName = vFrom
.Bcc = vToList
.Subject = vTemplateSubject
.HTMLBody = vTemplateBody
End With

我不确定Set otlApp等的双重使用是否必要或多余,如果有更简洁的方式来编写,请随时编辑此帖子。

相关问题