我在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
答案 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