使用Word Editor

时间:2015-05-08 15:20:07

标签: vba email outlook send outlook-vba

我有一条规则,即每当我收到主题行中包含特定字词的电子邮件时,它都会触发此脚本。

该脚本会将电子邮件转发给主题行中的特定用户,并使用单词编辑器删除电子邮件正文的第一行并将其更改为“Hi”。

当我使用.Display方法然后手动点击send它工作正常,但每当我使用.Send方法时,Outlook都不会更新/接收邮箱中的电子邮件不会转发编辑过的电子邮件。我需要关闭/重新启动脚本的outlook才能再次触发。

脚本有什么问题?

Sub EmailForward(item As Outlook.MailItem)

    Dim body As String
    Dim MI As MailItem
    Dim oMail As Outlook.MailItem

    Dim olInsp As Outlook.Inspector
    Dim wdDoc As Object
    Dim oRng As Object
    Dim objSel As Word.Selection

    Dim olApp As Outlook.Application

    Set MI = item
    Set olApp = Outlook.Application

        item.Subject = Replace(item.Subject, ", 4 - Low, Open", "")
        item.Subject = Replace(item.Subject, ", 4 - Low, New", "")
        item.Save

        Eadd = Right(MI.Subject, Len(MI.Subject) - InStr(MI.Subject, "|"))

        Set oMail = MI.Forward

        oMail.Subject = MI.Subject
        oMail.To = Eadd
        oMail.HTMLBody = item.HTMLBody

            Set olInsp = oMail.GetInspector
            Set wdDoc = olInsp.WordEditor
            Set oRng = wdDoc.Range(0, 0)
            Set objSel = wdDoc.Windows(1).Selection
            'oRng.Text = "The accompanying message text"

            objSel.MoveDown wdLine, 1, wdExtend
            objSel.Delete wdCharacter, 1
            objSel.TypeText Text:="Hi,"
            objSel.TypeParagraph

        oMail.SendUsingAccount = olApp.Session.Accounts.item(1)
        oMail.Display
        oMail.Save
        oMail.Send

End Sub

1 个答案:

答案 0 :(得分:2)

这是Outlook中的一个已知问题。您必须先调用Display方法才能使检查器可见。

使用HTMLBody或Body属性动态修改邮件正文。