如何通过Excel VBA自动回复Outlook?

时间:2017-09-20 08:19:01

标签: excel vba excel-vba

我正在努力获得一个程序,您可以使用Excel VBA回复Outlook中选定的电子邮件。不幸的是,我找不到任何有效的代码。

Option Explicit
Sub ReplyMSG()
  Dim olItem As Outlook.MailItem
  Dim olReply As MailItem ' Reply
  Dim olRecip As Recipient ' Add Recipient
  Dim myOlExp As Outlook.Explorer
  Dim myOlSel As Outlook.Selection

  Set myOlExp = Application.ActiveExplorer
  Set myOlSel = myOlExp.Selection

  For Each olItem In myOlSel
  Set olReply = olItem.ReplyAll
  Set olRecip = olReply.Recipients.Add("Email Address Here") ' Recipient Address
    olRecip.Type = olCC
        olReply.HTMLBody = "Hello, Thank you. " & vbCrLf & olReply.HTMLBody
    olReply.Display

    'olReply.Send
  Next olItem
End Sub

我正在尝试使用此代码,但错误438对象不支持此属性或方法继续出现。希望得到这种自动化的帮助。

1 个答案:

答案 0 :(得分:1)

如果您使用Excel VBA编写,则“应用程序”一词适用于Excel。 Excel应用程序没有ActiveExplorer属性。您应该回到Outlook应用程序,我在提供的代码中没有看到,例如设置myOlExp = refToOutlookApplication.ActiveExplorer

看看你上面显示的内容:

Set myOlExp = Application.ActiveExplorer

这意味着Set myOlExp = Excel.Application.ActiveExplorer,事实是Excel应用程序没有Explorer对象。

所以你需要:Set myOlExp = refToOutlookApplication.ActiveExplorer

您需要明确声明您希望将变量分配给Outlook应用程序的属性 - 在此阶段,我将假设您已在模块中的其他位置创建了引用。

如果没有,那么你需要这样做:

Dim refToOutlookApplication As Object    'Outlook.Application
Set refToOutlookApplication = GetObject(, "Outlook.Application")