gpt4 book ai didi

excel - 从 Excel VBA 将签名插入 Outlook 电子邮件

转载 作者:行者123 更新时间:2023-12-02 22:58:50 27 4
gpt4 key购买 nike

我正在尝试使用 VBA for Excel 自动处理一些电子邮件。到目前为止一切都很好,除了试图在电子邮件中保留我的签名。

一旦您告诉 VBA 创建新电子邮件,它将已经包含您的默认签名。如果您尝试Outmail.Display,就可以看到这一点。但是,如果您覆盖 .HTMLBody 属性,它将被删除。

我的简单尝试是将 .HTMLBody 的内容保存到 signature (字符串),然后将其重新分配给 .HTMLBody来测试一下。但是,生成的电子邮件将没有任何签名。

复制并重新插入签名的代码:

Dim myOlApp As Outlook.Application
Dim MyItem As Outlook.MailItem

Dim signature As String


Set myOlApp = CreateObject("Outlook.Application")
Set Outmail = myOlApp.CreateItem(0)

signature = Outmail.HTMLBody
Outmail.HTMLBody = signature

Outmail.Display

显示自动插入签名的代码:

Dim myOlApp As Outlook.Application
Dim MyItem As Outlook.MailItem
Set myOlApp = CreateObject("Outlook.Application")
Set Outmail = myOlApp.CreateItem(0)
Outmail.Display

编辑:我尝试用 .Body 替换 .HTMLBody 。这可行,但显然去掉了签名的 HTML 格式

编辑 2:代码在我 friend 的计算机上运行,​​但在我的计算机上运行失败

最佳答案

我用这个技巧解决了这个问题:

Set myOutlook = CreateObject("Outlook.Application")
Set tempMail = myOutlook.CreateItem(olMailItem)

With tempMail
' Trick to preserve Outlook default signature
' MailItem need to be displayed to be "fully created" as object (maybe VBA bug)

.Display
HTMLBody = .HTMLBody
.Close olDiscard

' --- Trick to split HTMLBody into Head and Signature ---
' Search for the position of the tag before signature
bodyTag = "<body"
PosBody = InStr(HTMLBody, bodyTag)
pTag = "<o:p>"
PosSignature = InStr(PosBody, HTMLBody, pTag)

Head = Left(HTMLBody, PosSignature - 1)
Signature = Right(HTMLBody, Len(HTMLBody) - PosSignature + 1)

End With

然后您可以简单地将 HTML 文本放在 Head 和 Signature 之间:

Set myOutlook = CreateObject("Outlook.Application")
Set myMail = myOutlook.CreateItem(olMailItem)

With myMail
.To = Recipients
.Subject = Subject
.CC = CC
.HTMLBody = Head & "Here the HTML text of your mail" & Signature
End With

我认为这是一种 VBA 错误:如果您不使用 .Display 方法,则不会“完全”创建 MailItem 对象。

尝试放置一个制动点并查看 .Display 方法行之前和之后立即窗口 (Ctrl + G) 上的 ?mymail.HTMLbody 值...

您还可以在本地窗口中获得相同的简单扩展 mymail 对象!

关于excel - 从 Excel VBA 将签名插入 Outlook 电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22233264/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com