使用Excel VBA,我想回复我在Outlook应用程序中选择/突出显示的电子邮件。
根据我选择电子邮件的顺序,有不同的电子邮件和主题行。
有回复错误的电子邮件。它应该回复那些我在Outlook中突出显示的邮件。
例如,当我选择三封电子邮件时,有两封回复正确,但另一封回复了我没有突出显示的电子邮件。
Sub SendEmail()
Dim OutlookApp As Object
Dim OutlookMail As Object
i = 1
Do While Not IsEmpty(Cells(i + 1, 4))
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.ActiveExplorer.Selection.Item(i)
Dim OutlookConversation As Object
Set OutlookConversation = OutlookMail.GetConversation
Dim OutlookTable As Object
Set OutlookTable = OutlookConversation.GetTable
Dim OutlookAr As Variant
OutlookAr = OutlookTable.GetArray(OutlookTable.GetRowCount)
Dim OutlookReplyToThisMail As Object
Set OutlookReplyToThisMail = OutlookMail.Session.GetItemFromID(OutlookAr(UBound(OutlookAr), 0))
With OutlookReplyToThisMail.ReplyAll
.Subject = Sheet1.Cells(1 + i, 15) & "_" & .Subject
.HTMLBody = "<p style='font-family:calibri;font-size:13'>" & _
Sheet1.Cells(34, 2 + i) & "<br>" & "<br>" & _
Sheet1.Cells(35, 2 + i) & "<br>" & "<br>" & _
Sheet1.Cells(36, 2 + i) & Signature & .HTMLBody
.Display
End With
i = i + 1
Loop
End Sub
1条答案
按热度按时间sbdsn5lh1#
首先,在循环中创建一个新的Outlook
Application
示例实际上不是一个好主意:相反,请考虑将创建线移动到循环之前的上方:
在该代码中,您将遍历Excel单元格并在Outlook中获取相应的选定项。
它应该只回复那些我在outlook电子邮件中突出显示的。
如果需要迭代Outlook中的所有选定项目,则不需要依赖Excel的数据,而是根据选定项目的数量获得一个单独的循环。例如: