14

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

  1. 宏安全设置正确
  2. 宏在一个模块中而不是在一个类中

你能告诉我设置中出了什么问题吗?

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
4

2 回答 2

25

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

Sub myRuleMacro(item as Outlook.MailItem)

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

相关文章

关于启用 run-a-script 规则的文章,否则由于安全原因而禁用
(注册表项EnableUnsafeClientMailRules)。

于 2013-07-05T16:47:30.633 回答
-1

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

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

于 2018-09-19T20:01:52.120 回答