【问题标题】:VBA Outlook Run-time Error - Could not send the messageVBA Outlook 运行时错误 - 无法发送消息
【发布时间】:2018-08-23 12:47:45
【问题描述】:

下面显示的 VBA 代码用于回复带有特定模板的电子邮件。用户通过文件对话框选择他们想要回复的电子邮件,然后代码应打开一封新电子邮件以回复所选电子邮件。我收到以下错误:

运行时错误“-2147352567 (80020009)” 无法发送消息。

当我点击“帮助”按钮时,它会将我带到这里:https://msdn.microsoft.com/en-us/VBA/Outlook-VBA/articles/olkcategory-backcolor-property-outlook

我无法想象该链接与错误有任何关系。我感觉我在添加回复电子邮件时做错了。任何帮助将不胜感激。

这是我的代码:

Public Sub btnOK_Click()

Dim myOlApp As Outlook.Application
Dim myItem As Outlook.MailItem
Dim body As String
Set myOlApp = CreateObject("Outlook.Application")

Select Case templateUserForm.templateListBox.Text
 Case "CWO"
    ReplyTo
    Set myItem = myOlApp.CreateItemFromTemplate("C:\example\temp\tempEmail.msg")
    myItem.Reply = myOlApp.CreateItemFromTemplate("L:\example\CWO.oft") <--- Error occurs on this line
    body = myItem.body
    Unload templateUserForm
    Unload inputUserForm
    myItem.Display
End Select
End Sub

Public Sub ReplyTo()

Dim fso As Object
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False

Dim fd As Office.FileDialog
Set fd = xlApp.Application.FileDialog(msoFileDialogFilePicker)
fd.AllowMultiSelect = False
Dim selectedItem As Variant

If fd.Show = -1 Then
For Each selectedItem In fd.SelectedItems
    Set fso = VBA.CreateObject("Scripting.FileSystemObject")
    Call fso.CopyFile(fd.SelectedItems.Item(1), "C:\example\temp\tempEmail.msg")
Next
End If
End Sub

【问题讨论】:

    标签: vba outlook runtime-error


    【解决方案1】:

    通常你会像这样创建一个回复对象:

    Set myReply = myItem.Reply
    

    从一个经常开始:

    Dim myReply as Outlook.MailItem
    Set myReply = myOlApp.CreateItemFromTemplate("L:\example\CWO.oft")
    myReply.Display
    

    现在没有错误,您可以使用 myReply 进行操作。

    看来你想要这个。

    Set myItem = myOlApp.CreateItemFromTemplate("C:\example\temp\tempEmail.msg")
    myReply = myOlApp.CreateItemFromTemplate("L:\example\CWO.oft") 
    myReply.body = myItem.body
    Unload templateUserForm
    Unload inputUserForm
    myReply.Display
    

    为了让结果看起来更像回复:

    myReply.body = myReply.body  & vbcr & myItem.reply.body
    

    根据您的模板,您可能需要 HTMLbody 而不是 body。

    【讨论】:

    • myReply.Display 只显示.oft,不回复.msg
    • myReply.body = myItem.body
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 2020-02-26
    • 2020-10-09
    • 1970-01-01
    • 2019-01-08
    相关资源
    最近更新 更多