我在“运行脚本”选择框中看不到我的VBA宏

时间:2013-07-05 16:13:12

标签: vba outlook-vba

我在我的oulook VBE中复制了以下代码,来自其中一个VBA社区,并根据我的需要对其进行了修改。 我可以使用F5和F8运行它。现在,每当我收到folder1中的电子邮件时,我都想运行此宏。 我尝试设置规则,但我看不到“运行脚本”选择框中列出的宏。 我已经检查了

  1. 宏安全设置正确
  2. 宏位于不在类
  3. 中的模块中 你可以告诉我这个环境出了什么问题。

    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
    

2 个答案:

答案 0 :(得分:20)

要被识别为规则向导的正确脚本宏,宏必须具有预期参数:

Sub myRuleMacro(item as Outlook.MailItem)

MSDN article(对Outlook 2007/2010/2013/2016仍然有效)

Related article

Article about enabling run-a-script rules因安全原因而被禁用 (注册表项EnableUnsafeClientMailRules)。

答案 1 :(得分:0)

在Office升级到版本1803(内部版本9126.2282)之后,我今天在类似的脚本上遇到了相同的问题。从子目录中删除“ Pubic”关键字就可以了。不知道为什么,因为多年来一直以其他方式工作。

我还必须重新添加消失的reg键-EnableUnsafeClientMailRules。