我在我的oulook VBE中复制了以下代码,来自其中一个VBA社区,并根据我的需要对其进行了修改。 我可以使用F5和F8运行它。现在,每当我收到folder1中的电子邮件时,我都想运行此宏。 我尝试设置规则,但我看不到“运行脚本”选择框中列出的宏。 我已经检查了
Public Sub SaveAttachments()
Dim myOlapp As Outlook.Application
Dim myNameSpace As Outlook.NameSpace
Dim myFolder As Outlook.MAPIFolder
Dim yourFolder As Outlook.MAPIFolder
Dim myItem As Outlook.MailItem
Dim myAttachment As Outlook.Attachment
Dim I As Long
Set myOlapp = CreateObject("Outlook.Application")
Set myNameSpace = myOlapp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox)
Set yourFolder = myNameSpace.GetDefaultFolder(olFolderInbox)
Set myFolder = myFolder.Folders("folder1")
Set yourFolder = yourFolder.Folders("folder2")
For Each myItem In myFolder.Items
If myItem.Attachments.Count <> 0 Then
For Each myAttachment In myItem.Attachments
I = I + 1
myAttachment.SaveAsFile "C:\arthur\test.csv"
Next
End If
myItem.Move yourFolder
Next
End Sub
答案 0 :(得分:20)
要被识别为规则向导的正确脚本宏,宏必须具有预期参数:
Sub myRuleMacro(item as Outlook.MailItem)
MSDN article(对Outlook 2007/2010/2013/2016仍然有效)
Article about enabling run-a-script rules因安全原因而被禁用
(注册表项EnableUnsafeClientMailRules
)。
答案 1 :(得分:0)
在Office升级到版本1803(内部版本9126.2282)之后,我今天在类似的脚本上遇到了相同的问题。从子目录中删除“ Pubic”关键字就可以了。不知道为什么,因为多年来一直以其他方式工作。
我还必须重新添加消失的reg键-EnableUnsafeClientMailRules。