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

我创build了一个打开Outlook电子邮件模板的macros,以供用户发送(从电子表格中拉出一些附加信息)。 除了Outlook自动添加基于用户设置的签名外,一切进展顺利。 虽然我可以很容易地closures我自己的签名,但我并不是唯一可能运行此macros的人。

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

Google为VBA生成的电子邮件提供了很多签名的build议,但我找不到任何关于它们的信息。 有任何想法吗?

现有的代码:

... 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 

好吧,经过多次的search,我find了一种方法来实现我想要做的,通过把一堆类似的解决scheme结合到不同的问题上。

我了解到,只要你不显示电子邮件,自动用户签名不会被添加。 因此,您可以打开(不显示)电子邮件模板,将模板电子邮件中所需的正文,主题和其他电子邮件参数复制到VBvariables中。 然后,可以使用这些variables值来覆盖您想要的部分电子邮件。显示给用户。

在这里我的最终代码:

 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等的双重使用是必要的还是多余的,如果有更简洁的写法,请随时编辑这篇文章。

@JoeMalpass,

我知道这是一个旧的post,但为了任何人谁可能会绊倒这个利益…

从阅读您的解决scheme,我了解到,问题是,当您从模板创build的电子邮件上使用.Display Outlook附加签名。 由于这是唯一的问题,所以我想到解决办法可能比你提出的解决scheme简单得多。

在您的原始文章的代码中,您可以简单地replace

  .Display 

  BodyWithoutSignature = .HTMLBody .Display .HTMLBody = BodyWithoutSignature 

由于.Display追加了一个你不想要的签名,只需在签名被添加之前用正在replace的内容replace。 我testing了它,并且(惊讶地)它实际上工作。 这很简单!