我在Outlook中有一个电子邮件文件夹,我希望能够对文件夹中的每封电子邮件应用相同的操作,但我注意到Outlook的开发人员选项中没有宏录制器。
我目前正在进行的流程涉及打开每封电子邮件(因为它包含HTML内容,我想以文档质量图像打印)从“操作”选项卡中选择“在浏览器中查看”,然后从Internet Explorer打印。
有没有办法在Outlook中针对文件夹中的每封电子邮件迭代此操作?我不知道如何在没有某种方式记录我的行为的情况下设置这个,以了解如何在Outlook模块中引用内容......
答案 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