首页 文章

Outlook - 将所选项目转发为附件宏 - 发出前向符号

提问于
浏览
0

我从用户thommck的一篇非常有用的帖子中找到了以下代码 . 它将选定的项目作为附件在单独的电子邮件中转发给指定的收件人 .

当我使用代码时,转发符号不会出现在我刚转发的电子邮件的电子邮件图标上 . 如果我使用常规Outlook方法“转发为附件”,则该符号将添加到我的查看窗格中的信封图标中 .

有关如何在使用此代码时显示此前向符号的任何想法?

Sub ForwardSelectedItems()

    On Error Resume Next

    Dim objItem As Outlook.MailItem

    If Application.ActiveExplorer.Selection.Count = 0 Then
        MsgBox ("No item selected")
        Exit Sub
    End If

    For Each objItem In Application.ActiveExplorer.Selection
        Set objMsg = Application.CreateItem(olMailItem)
        With objMsg
            .Attachments.Add objItem, olEmbeddeditem
            .Subject = "enter text"
            .To = "example@example.com"
            .Send
        End With
    Next

    Set objItem = Nothing
    Set objMsg = Nothing

End Sub

3 回答

  • 0

    在原始邮件上设置PR_ICON_INDEX属性 . 您还可以(可选)设置PR_LAST_VERB_EXECUTED和PR_LAST_VERB_EXECUTION_TIME属性 .

    查看Outlook使用OutlookSpy转发的邮件(单击IMessage按钮):

    objItem.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x10800003", 262)
    objItem.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x10810003", 104) 'EXCHIVERB_FORWARD
    objItem.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x10820040", Now)
    objItem.Save
    
  • 0

    您需要使用MailItem类的Forward方法,而不是在代码中创建新的邮件项:

    Application.CreateItem(olMailItem)
    

    应替换为:

    objItem.Foward()
    

    请注意,如果您不想查看附加项目的内容,则需要清除邮件正文 .

    您可能会发现Getting Started with VBA in Outlook 2010文章很有帮助 .

  • 0

    您可以使用ExecuteMso模拟按下按钮 .

    https://msdn.microsoft.com/en-us/library/office/ff862419%28v=office.15%29.aspx

    expression.ExecuteMso(idMso)

    expression一个返回CommandBars对象的表达式 .

    要查找idMso,请完成向快速访问工具栏或功能区添加按钮的过程 . 在列表中找到控件后,将鼠标悬停在其上,直到出现工具提示 . idMso是括号中的名称 .

    在这种情况下,它是ForwardAsAttachment

相关问题