我创建了一个宏,可以打开一个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
答案 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
等的双重使用是否必要或多余,如果有更简洁的方式来编写,请随时编辑此帖子。