如何在Excel中使用VBA回复Outlook邮件



我想回复选定的邮件。

下面的Excel VBA代码创建邮件,邮件正文中没有上一个对话(线程(。

Sub Test_template()

Dim emailApplication As Object
Dim emailItem As Object

Set emailApplication = CreateObject("Outlook.Application")
Set emailItem = emailApplication.ActiveExplorer.Selection.Item(1).ReplyAll

emailItem.bcc = "XYZ.com"
emailItem.Body = "Hi, have a nice day "
emailItem.Display

Set emailItem = Nothing
Set emailApplication = Nothing

End Sub

这就是您正在尝试的吗?我已经对代码进行了评论,并提供了相关的MSDN链接。如果你仍然被卡住了,那就简单地问一下。

Option Explicit
Sub Sample()
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.ActiveExplorer.Selection.Item(1)

'~~> Get MailItem.GetConversation method (Outlook)
' https://learn.microsoft.com/en-us/office/vba/api/outlook.mailitem.getconversation
Dim OutlookConversation As Object
Set OutlookConversation = OutlookMail.GetConversation
'~~> Conversation.GetTable method (Outlook)
' https://learn.microsoft.com/en-us/office/vba/api/outlook.conversation.gettable
Dim OutlookTable As Object
Set OutlookTable = OutlookConversation.GetTable

'~~> Obtains a 2D array from the Table.
' https://learn.microsoft.com/en-us/office/vba/api/outlook.table.getarray
Dim OutlookAr As Variant
OutlookAr = OutlookTable.GetArray(OutlookTable.GetRowCount)

Dim OutlookReplyToThisMail As Object
Set OutlookReplyToThisMail = OutlookMail.Session.GetItemFromID(OutlookAr(UBound(OutlookAr), 0))

Dim MyMessage As String: MyMessage = "Hi, have a nice day "

With OutlookReplyToThisMail.ReplyAll
.BCC = "XYZ.com"
.HTMLBody = MyMessage & .HTMLBody
.Display
End With
End Sub

.ReplyAll产生预期结果,但被emailItem.Body = "Hi, have a nice day "覆盖。

Option Explicit
Sub Test_template()

Dim emailApplication As Object
Dim emailItem As Object

'Set emailApplication = CreateObject("Outlook.Application")

' mail has to be slelected in Outlook application so it has to be open already
Set emailApplication = GetObject(, "Outlook.Application")
Set emailItem = emailApplication.ActiveExplorer.Selection.Item(1).ReplyAll

emailItem.BCC = "XYZ.com"

'emailItem.Body = "Hi, have a nice day "

emailItem.Body = "Hi, have a nice day " & emailItem.Body

' or
'emailItem.htmlBody = "Hi, have a nice day " & emailItem.htmlBody

emailItem.Display

Set emailItem = Nothing
Set emailApplication = Nothing

End Sub

最新更新