VBA Outlook WordEditor 和.Display 方法

标签 vba outlook

我进行了合理的“谷歌搜索”,但找不到我的问题的答案。

我有以下两个子例程。两者完全相同,除了第一个有“ForwardMailItem.Display”,而第二个没有。结果是第一个生成的电子邮件草稿包含插入的文本“testing here”,而第二个生成的电子邮件草稿不包含插入的文本。我有几个问题,希望有人能帮助我。 1) 我如何在不使用 .Display 方法的情况下在转发的电子邮件中成功插入新文本,因为 .InsertBefore 本身似乎并不能解决问题? 2) .Display 在我的案例中除了直观地显示项目外还有什么特别的作用?

Sub TestInsertBeforeWithDisplay()

    Dim NewMailItem As Outlook.MailItem
    Dim ForwardMailItem As Outlook.MailItem

    For Each NewMailItem In Application.Session.GetDefaultFolder(olFolderInbox).Items.Restrict("[Unread]=true")
        Set ForwardMailItem = NewMailItem.FORWARD
        ForwardMailItem.GetInspector.WordEditor.Characters(1).InsertBefore "testing here"
        ForwardMailItem.Display
        ForwardMailItem.Close olSave
    Next NewMailItem

End Sub

Sub TestInsertBeforeWithoutDisplay()

    Dim NewMailItem As Outlook.MailItem
    Dim ForwardMailItem As Outlook.MailItem

    For Each NewMailItem In Application.Session.GetDefaultFolder(olFolderInbox).Items.Restrict("[Unread]=true")
        Set ForwardMailItem = NewMailItem.FORWARD
        ForwardMailItem.GetInspector.WordEditor.Characters(1).InsertBefore "testing here"
        ForwardMailItem.Close olSave
    Next NewMailItem

End Sub

最佳答案

有趣的问题。我不经常对 Outlook 进行编码,但我认为答案是您必须关闭并保存 ActiveInspector:

Sub TestInsertBeforeWithDisplay()
Dim NewMailItem As Outlook.MailItem
Dim ForwardMailItem As Outlook.MailItem
Dim ActInsp As Outlook.Inspector

For Each NewMailItem In Application.Session.GetDefaultFolder(olFolderInbox).Items.Restrict("[Unread]=true")
    Set ForwardMailItem = NewMailItem.Forward
    Set ActInsp = ForwardMailItem.GetInspector
    With ActInsp
        .WordEditor.Characters(1).InsertBefore "testing here"
        .Close (olSave)
    End With
    ForwardMailItem.Close olSave
Next NewMailItem
End Sub

我能够重现您的问题并且上面的代码修复了它。我不确定是否还有必要保存 ForwardMailItem

关于VBA Outlook WordEditor 和.Display 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17763920/

相关文章:

html - 如何删除 Outlook 中的链接下划线?

vba - 获取一年中的第一天和最后一天

vba - 在 Outlook 2010 中的新邮件消息功能区中切换自定义按钮

vba - "Invalid Qualifier"从字符串数组写入单元格时

vba - Microsoft Word 中的拼写错误

outlook - 有没有办法通过 Outlook/Exchange 以编程方式调用电子邮件?

当我尝试访问 MailItem COM 中任何与日期相关的字段时 Python 崩溃

c# - 来自所选联系人的 Outlook 信息

html - Outlook HTML 电子邮件的边框宽度差异

vba - 循环遍历当前事件工作表中 Excel VBA 中的所有命名范围