Vba 在Outlook 2013中自动执行操作

Vba 在Outlook 2013中自动执行操作,vba,outlook,html-email,office-automation,Vba,Outlook,Html Email,Office Automation,我在outlook中有一个电子邮件文件夹,我希望能够对文件夹中的每封电子邮件应用相同的操作,但是我注意到outlook的开发人员选项中没有宏记录器 我目前正在进行的过程包括打开每封电子邮件(因为它包含HTML内容,我希望以文档质量的图像打印),从“操作”选项卡中选择“在浏览器中查看”,然后从Internet Explorer打印 是否有方法在Outlook中对文件夹中的每封电子邮件重复此操作?如果不记录我的操作以了解如何引用Outlook模块中的内容,我就不知道如何着手解决这个问题。您需要了解一

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

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


是否有方法在Outlook中对文件夹中的每封电子邮件重复此操作?如果不记录我的操作以了解如何引用Outlook模块中的内容,我就不知道如何着手解决这个问题。

您需要了解一点Outlook的对象模型。这里有一个小代码让你开始。此宏将循环遍历文件夹中的所有项目,检查收件人的电子邮件地址并设置标志

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

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

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

范例

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没有记录器。您必须自己键入VBA(或从internet上复制)。