web-dev-qa-db-ja.com

「スクリプトの実行」選択ボックスにVBAマクロが表示されません

VBAコミュニティの1つから、oulook VBEに次のコードをコピーし、必要に応じて修正しました。 F5とF8を使用して実行できます。次に、folder1でメールを受信するたびにこのマクロを実行したいと思います。ルールを設定しようとしましたが、「スクリプトの実行」選択ボックスにリストされているマクロが表示されません。私はすでにそれをチェックしました

  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
14
user2554417

Rule Wizardの適切なスクリプトマクロとして認識されるためには、マクロに必要なパラメータが必要です。

Sub myRuleMacro(item as Outlook.MailItem)

MSDN記事 (Outlook 2007/2010/2013/2016でも引き続き有効)

関連記事

run-a-scriptルールの有効化に関する記事 それ以外の場合はセキュリティ上の理由により無効化
(レジストリキーEnableUnsafeClientMailRules)。

21
Axel Kemper

Officeがバージョン1803(ビルド9126.2282)にアップグレードされた後、同様のスクリプトで同じ問題が発生しました。 Subから "Pubic"キーワードを削除することでトリックができました。理由がわからない、以来何年もの間他の方法で働いてきた。

また、消えたregキーを再度追加する必要がありました-EnableUnsafeClientMailRules。

0
Keith