使用Adobe Acrobat创建新电子邮件后,我无法为该电子邮件运行VBA

时间:2015-03-09 22:39:41

标签: vba outlook adobe outlook-vba acrobat

我在Outlook 2013(32位)中创建了一个宏,它应该获取附件的名称并将主题设置为与附件的文件名相同,如果电子邮件是从其他任何其他人创建的,那么它的工作原理很完美应用程序甚至是Outlook内部,除非从Adobe Acrobat创建电子邮件。

如果您在Adobe Acrobat中打开文件并希望通过电子邮件发送该文件并单击Adobe Acrobat中的“将文件作为电子邮件附件发送”图标,它将在Outlook 2013中打开一封新电子邮件,并且还将附加归档到新的电子邮件,但在这一步之后,我想运行我的宏,我无法运行它。

我需要在Adobe中设置一些特别的东西吗?我已经阅读了几个技术支持的网站,但我找不到答案。我有超过15天的时间寻找信息,而我却找不到它。

我使用的是Adobe Acrobat XI Standard和Office 2013(32位)

甚至VBA中的宏像:

Public Sub HelloWorld()
    MsgBox "Hello World!"
End Sub
如果电子邮件是通过Adobe Acrobat创建的,

将无效。

编辑:

设置电子邮件主题的代码与附件相同。

Option Explicit

Public Sub InsertText()
    Dim attachment As attachment
    Dim report As String
    Dim newMail As Outlook.MailItem
    Dim oInspector As Outlook.Inspector

    Set oInspector = Application.ActiveInspector
    If oInspector Is Nothing Then
        MsgBox "No active inspector. Please, talk to your IT Department."
    Else
        Set newMail = oInspector.currentItem
            If newMail.Sent Then
                MsgBox "This is not an editable email"
            Else
                For Each attachment In newMail.Attachments
                    report = report & attachment.FileName & "; "
                Next
                newMail.Subject = report
            End If
    End If
End Sub

3 个答案:

答案 0 :(得分:0)

打开新的MailItem时,不应自动运行示例宏。相反,您需要处理Outlook事件。

Outlook对象模型提供Application类的ItemSend事件,只要用户通过Inspector发送Microsoft Outlook项目(在检查器关闭之前,但在用户单击发送按钮)或在程序中使用Outlook项目的发送方法(如MailItem)时。您可以在用户提交要发送的邮件后使用它进行更改。

此外,您可能会发现Inspectors类的NewInspector事件很有帮助。每当打开一个新的检查器窗口时,无论是作为用户操作还是通过程序代码,都会触发它。

最后,我建议从MSDN中的Getting Started with VBA in Outlook 2010文章开始。

答案 1 :(得分:0)

您使用的是简单MAPI而不是Outlook。

http://www.msoutlook.info/question/203

"当我开始从其他应用程序创建电子邮件时,我再也无法访问Outlook。

例如,当您使用Send->时,您会发现此行为。在Word或Excel(或任何其他Office应用程序)中或选择“发送至”时的电子邮件;在资源管理器中右键单击文件时的邮件收件人。

这是因为“发送到”命令启动简单MAPI,它只加载Outlook的存根并启动模式窗体而不是无模式窗体。这意味着必须先完成表单,然后才能再次使用表单下的应用程序。

除了开始从Outlook而不是其他应用程序创建邮件之外,没有直接的解决方法。"

答案 2 :(得分:0)

设置电子邮件主题的代码与附件相同:

Option Explicit

Public Sub InsertText()
    Dim attachment As attachment
    Dim report As String
    Dim newMail As Outlook.MailItem
    Dim oInspector As Outlook.Inspector

    Set oInspector = Application.ActiveInspector
    If oInspector Is Nothing Then
        MsgBox "No active inspector. Please, talk to your IT Department."
    Else
        Set newMail = oInspector.currentItem
            If newMail.Sent Then
                MsgBox "This is not an editable email"
            Else
                For Each attachment In newMail.Attachments
                    report = report & attachment.FileName & "; "
                Next
                newMail.Subject = report
            End If
    End If
End Sub