收到邮件时如何调用代码?
How to invoke code when there is incoming mail?
我有 VBA 代码可以在邮件进入 Outlook 后立即下载附件。
如何调用此代码或是否有其他方法自动下载附件?
Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim saveFolder As String
saveFolder = "D:\outlook\"
For Each objAtt In itm.Attachments
MsgBox objAtt
objAtt.SaveAsFile saveFolder & "\" & objAtt.DisplayName
MsgBox saveFolder & "\" & objAtt.DisplayName
Set objAtt = Nothing
Next
End Sub
您似乎正在尝试创建一个规则来触发 VBA 脚本以将附件保存在磁盘上。如果是这样,我建议从代码中删除任何 MsgBox
语句。它可能会停止来自 运行 的代码。相反,您可以在代码中使用 Debug.Print
语句。有关详细信息,请参阅 Where does VBA Debug.Print log to?。
您可以考虑处理应用程序 class 的 NewMailEx 事件而不是使用规则。对于 Microsoft Outlook 处理的每个接收项目,该事件都会触发一次。该项目可以是多种不同项目类型中的一种,例如 MailItem、MeetingItem 或 SharingItem。 EntryIDsCollection 字符串包含对应于该项目的条目 ID。
最后,您可能会发现 Getting Started with VBA in Outlook 2010 文章很有帮助。
我有 VBA 代码可以在邮件进入 Outlook 后立即下载附件。
如何调用此代码或是否有其他方法自动下载附件?
Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim saveFolder As String
saveFolder = "D:\outlook\"
For Each objAtt In itm.Attachments
MsgBox objAtt
objAtt.SaveAsFile saveFolder & "\" & objAtt.DisplayName
MsgBox saveFolder & "\" & objAtt.DisplayName
Set objAtt = Nothing
Next
End Sub
您似乎正在尝试创建一个规则来触发 VBA 脚本以将附件保存在磁盘上。如果是这样,我建议从代码中删除任何 MsgBox
语句。它可能会停止来自 运行 的代码。相反,您可以在代码中使用 Debug.Print
语句。有关详细信息,请参阅 Where does VBA Debug.Print log to?。
您可以考虑处理应用程序 class 的 NewMailEx 事件而不是使用规则。对于 Microsoft Outlook 处理的每个接收项目,该事件都会触发一次。该项目可以是多种不同项目类型中的一种,例如 MailItem、MeetingItem 或 SharingItem。 EntryIDsCollection 字符串包含对应于该项目的条目 ID。
最后,您可能会发现 Getting Started with VBA in Outlook 2010 文章很有帮助。