Cac*_*ake 4 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
Run Code Online (Sandbox Code Playgroud)
小智 6
@JoeMalpass,
我知道这是一则旧文章,但是对于任何可能偶然发现此问题的人来说都是有益的。
通过阅读解决方案,我了解到问题在于,当您在通过模板创建的电子邮件中使用.Display时,Outlook会附加一个签名。由于这是唯一的问题,所以我想到解决方案可能比您提出的解决方案简单得多。
在原始帖子的代码中,您只需替换
.Display
Run Code Online (Sandbox Code Playgroud)
与
BodyWithoutSignature = .HTMLBody
.Display
.HTMLBody = BodyWithoutSignature
Run Code Online (Sandbox Code Playgroud)
由于.Display会添加您不需要的签名,因此只需将正文替换为添加签名之前的内容即可。我对其进行了测试,并对此感到惊讶。就这么简单!
好的,经过大量搜索后,我找到了一种方法来实现我想要做的事情,通过结合一堆类似的解决方案来解决不同的问题。
我了解到,只要您不发送.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
Run Code Online (Sandbox Code Playgroud)
我不确定双重使用Set otlAppetc 是必要的还是多余的,如果有更简洁的编写方式,请随意编辑这篇文章。
| 归档时间: |
|
| 查看次数: |
23367 次 |
| 最近记录: |