为什么将宏 (Sub) 分配给 Button 在单独的模块中不起作用,尽管如果我将它放在 (ThisOutlookSession) 上它会起作用?
Why assigning a macro (Sub) to a Button is not working from a separate module , although it works if I put it on (ThisOutlookSession)?
I am using the below code to
:将选中项目的所有附件保存到硬盘。
分配给 Path 变量的路径必须存在。
该宏会自动在该目录中创建一个以当前日期命名的子文件夹。
最终 Windows 文件资源管理器将使用该新目录打开。
问题,如果我将下面的代码放在单独的模块上,然后将其分配给功能区上的自定义按钮,
然后单击该按钮,结果根本没有执行任何操作,也没有出现任何错误, 虽然 如果我从代码 window 运行 它,它可以正常工作。
另外,如果我将所有子移动到 (ThisOutlookSession
) 并将其分配给一个按钮,结果是宏从该按钮正确工作。
所以,我的问题是如何将这段代码保存在一个单独的模块中,并通过功能区上的按钮使其成为 运行?
Public Sub SaveAttachments2()
Dim coll As VBA.Collection
Dim obj As Object
Dim Att As Outlook.Attachment
Dim Sel As Outlook.Selection
Dim Path$
Dim i&
Path = "d:\"
Path = Path & Format(Date, "yyyy-mm-dd") & "\"
On Error Resume Next
MkDir Path
On Error GoTo 0
Set coll = New VBA.Collection
If TypeOf Application.ActiveWindow Is Outlook.Inspector Then
coll.Add Application.ActiveInspector.CurrentItem
Else
Set Sel = Application.ActiveExplorer.Selection
For i = 1 To Sel.Count
coll.Add Sel(i)
Next
End If
For Each obj In coll
For Each Att In obj.Attachments
Att.SaveAsFile Path & Att.FileName
Next
Next
Shell "Explorer.exe /n, /e, " & Path, vbNormalFocus
End Sub
您可以在任何模块中声明您的原始子程序,但在 QAT 按钮调用时使用 ThisOutlookSession
文件中的代理来调用它。
默认情况下,Outlook 仅监视默认的 ThisOutlookSession
模块以查找可分配给 QAT 按钮的订阅。
I am using the below code to
:将选中项目的所有附件保存到硬盘。
分配给 Path 变量的路径必须存在。
该宏会自动在该目录中创建一个以当前日期命名的子文件夹。
最终 Windows 文件资源管理器将使用该新目录打开。
问题,如果我将下面的代码放在单独的模块上,然后将其分配给功能区上的自定义按钮,
然后单击该按钮,结果根本没有执行任何操作,也没有出现任何错误, 虽然 如果我从代码 window 运行 它,它可以正常工作。
另外,如果我将所有子移动到 (ThisOutlookSession
) 并将其分配给一个按钮,结果是宏从该按钮正确工作。
所以,我的问题是如何将这段代码保存在一个单独的模块中,并通过功能区上的按钮使其成为 运行?
Public Sub SaveAttachments2()
Dim coll As VBA.Collection
Dim obj As Object
Dim Att As Outlook.Attachment
Dim Sel As Outlook.Selection
Dim Path$
Dim i&
Path = "d:\"
Path = Path & Format(Date, "yyyy-mm-dd") & "\"
On Error Resume Next
MkDir Path
On Error GoTo 0
Set coll = New VBA.Collection
If TypeOf Application.ActiveWindow Is Outlook.Inspector Then
coll.Add Application.ActiveInspector.CurrentItem
Else
Set Sel = Application.ActiveExplorer.Selection
For i = 1 To Sel.Count
coll.Add Sel(i)
Next
End If
For Each obj In coll
For Each Att In obj.Attachments
Att.SaveAsFile Path & Att.FileName
Next
Next
Shell "Explorer.exe /n, /e, " & Path, vbNormalFocus
End Sub
您可以在任何模块中声明您的原始子程序,但在 QAT 按钮调用时使用 ThisOutlookSession
文件中的代理来调用它。
默认情况下,Outlook 仅监视默认的 ThisOutlookSession
模块以查找可分配给 QAT 按钮的订阅。