2

我们有一个小宏(添加到功能区),单击时应该附加某个文件夹中的一些文件。

这在 Outlook 中创建“新”邮件时有效。当您使用(例如)Adobe Acrobats 的“作为电子邮件发送”功能时,Outlook 中的电子邮件会以模态对话框的形式打开。

功能区上的按钮现在无效。这很简单,什么都不做。(甚至不会显示第一行中的 MessageBox)使用开发人员工具 - > 宏并从“那里”选择宏。

为什么功能区上的按钮没有调用相同的宏而不适用于模态电子邮件?

宏 - 但如前所述,甚至不会出现 MessageBox。

Sub AddAttachments()

Dim Path As String
Path = "C:\test\"

Dim NewMail As MailItem, oInspector As Inspector
Set oInspector = Application.ActiveInspector
If oInspector Is Nothing Then
    MsgBox "No active inspector"
Else
    Set NewMail = oInspector.CurrentItem
    If NewMail.Sent Then
        MsgBox "This is not an editable email"
    Else
       With NewMail
          d = Dir(Path & "*.*")
          While d <> ""
             .Attachments.Add Path & d
             d = Dir
          Wend
       End With
   End If
End If
End Sub

更新:通过另一个应用程序为电子邮件发送应用程序提供更多设置,我能够弄清楚以下内容:

  • 使用“Outlook OLE”作为电子邮件发送方法时,一切正常。
  • 使用“MAPI”作为Email-Sending Method 时,出现上述效果。

因此,Adobe Acrobat 似乎默认使用(简单)MAPI。

编辑:在了解了实际原因后,我发现了这一点:https ://www.msoutlook.info/question/203 - 对于通过 MAPI 创建电子邮件的应用程序来说,这似乎是一个已知的、不可解决的限制,因为 Outlook 没有“完全”加载但只是一些基本的存根。


更新:

单击“作为邮件发送按钮”(1) 时,会出现以下窗口。单击功能区 (2) 内的“宏按钮”不会执行任何操作。

在此处输入图像描述

切换到 DeveloperTools,选择“宏”并从那里选择相同的宏但是有效:

在此处输入图像描述

另一方面,该按钮适用于通过 Outlook 创建的“新电子邮件”和使用Outlook OLErathen创建的“新邮件” MAPI

4

1 回答 1

1

好的,总结一下问题和缺少的解决方案:

我与显示此问题的各种应用程序的支持人员取得了联系,他们确认此问题是由MAPI用作入口点引起的。

例如,“PDF24”允许您指定它应该使用MAPIOutlook OLE:选择MAPI导致相同的问题,而选择Outlook OLE使 VBA-Macros 工作......

在此处输入图像描述

我还注意到,当使用以下命令触发 Outlook 时,未加载负责处理VBA-Scripts( ) 的插件:Microsoft.VbaAddinForOutlookMAPI

事件日志(应用程序)显示在启动期间加载了几个插件:

Outlook loaded the following add-in(s):


Name: Microsoft Exchange Add-in
Description: Exchange support for Unified Messaging, e-mail permission rules, and calendar availability.
ProgID: UmOutlookAddin.FormRegionAddin
GUID: {F959DBBB-3867-41F2-8E5F-3B8BEFAA81B3}
Load Behavior: 3
HKLM: 1
Location: C:\Program Files (x86)\Microsoft Office\Root\Office16\ADDINS\UmOutlookAddin.dll
Boot Time (Milliseconds): 0

Name: Outlook Social Connector 2016
Description: Connects to social networking sites and provides people, activity, and status information.
ProgID: OscAddin.Connect
GUID: {2163EB1F-3FD9-4212-A41F-81D1F933597F}
Load Behavior: 3
HKLM: 1
Location: C:\Program Files (x86)\Microsoft Office\Root\Office16\SOCIALCONNECTOR.DLL
Boot Time (Milliseconds): 0

...

但是只有在第一次“单击”宏按钮时才加载 VBA-Addin,因为它LoadBehavior: 9不是LoadBehavior: 3

(此事件出现“onclick”):

Name: Microsoft VBA for Outlook Addin
Description: 
ProgID: Microsoft.VbaAddinForOutlook.1
GUID: {799ED9EA-FB5E-11D1-B7D6-00C04FC2AAE2}
Load Behavior: 9
HKLM: 1
Location: C:\Program Files (x86)\Microsoft Office\Root\Office16\ADDINS\OUTLVBA.DLL
Boot Time (Milliseconds): 0

(当通过 a 创建 Window 时,该事件完全丢失MAPI-Call

我设法在注册表中“伪造”了一个条目,以便立即加载插件:

[HCU\SOFTWARE\Microsoft\Office\Outlook\Addins\Microsoft.VbaAddinForOutlook.1]
"LoadBehavior"=dword:00000003

这确实在 Outlook 启动期间加载了插件 - 但没有让 VB 宏在MAPI生成的电子邮件 Windows 中工作的预期影响。

Name: Microsoft VBA for Outlook Addin
Description: 
ProgID: Microsoft.VbaAddinForOutlook.1
GUID: {799ED9EA-FB5E-11D1-B7D6-00C04FC2AAE2}
Load Behavior: 3
HKLM: 1
Location: C:\Program Files (x86)\Microsoft Office\Root\Office16\ADDINS\OUTLVBA.DLL
Boot Time (Milliseconds): 0

但对于面临相同问题并寻求解决方案的人来说,“这个”可能是一个很好的起点。

于 2017-05-08T16:43:34.403 回答