自动化Outlook 2013中的操作

时间:2015-07-14 16:51:07

标签: vba outlook html-email outlook-vba office-automation

我在Outlook中有一个电子邮件文件夹,我希望能够对文件夹中的每封电子邮件应用相同的操作,但我注意到Outlook的开发人员选项中没有宏录制器。

我目前正在进行的流程涉及打开每封电子邮件(因为它包含HTML内容,我想以文档质量图像打印)从“操作”选项卡中选择“在浏览器中查看”,然后从Internet Explorer打印。

有没有办法在Outlook中针对文件夹中的每封电子邮件迭代此操作?我不知道如何在没有某种方式记录我的行为的情况下设置这个,以了解如何在Outlook模块中引用内容......

2 个答案:

答案 0 :(得分:1)

您需要了解一下Outlook的对象模型Getting Started with VBA in Outlook 2010。这里有一些代码可以帮助您入门。此宏将循环遍历文件夹中的所有项目,并检查收件人的电子邮件地址并设置标志

Sub SetFlagIcon()
    Dim mpfInbox As Outlook.Folder
    Dim obj As Outlook.MailItem
    Dim i As Integer
    Set mpfInbox = Application.GetNamespace("MAPI").Folders("Jeanno").Folders("Sent Mail")
    ' Loop all items in the Inbox\Test Folder
    For i = 1 To mpfInbox.Items.Count
        If mpfInbox.Items(i).Class = olMail Then
            Set obj = mpfInbox.Items.Item(i)
            For Each Recipient In obj.Recipients
                If Recipient.Address = "someone@email" Then
                    'Set the yellow flag icon
                    obj.FlagIcon = olYellowFlagIcon
                    obj.Save
                End If
            Next Recipient
        End If
    Next
End Sub

答案 1 :(得分:0)

Outlook没有宏录制器,但您可以使用Word中记录的宏,因为Outlook使用Microsoft Word作为电子邮件编辑器,允许开发人员使用功能强大的Word库来编辑电子邮件和其他项目的内容。 / p>

您可以在Word中录制宏并在Outlook VBA项目中使用相同的代码,只需确保设置对“ Microsoft Word对象库”的引用,以便Outlook可以识别所使用的对象字。

实施例

Option Explicit
Public Sub UseWord()
    Dim Ins As Outlook.Inspector
    Dim wDoc As Word.Document
    Dim Word As Word.Application
    Dim Selection As Word.Selection

    Set Ins = Application.ActiveInspector
    Set wDoc = Ins.WordEditor
    Set Word = wDoc.Application
    Set Selection = Word.Selection

    'insert here your macro from word

End Sub

这是有用的链接Outlook 2010