VBAコミュニティの1つから、oulook VBEに次のコードをコピーし、必要に応じて修正しました。 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
Rule Wizardの適切なスクリプトマクロとして認識されるためには、マクロに必要なパラメータが必要です。
Sub myRuleMacro(item as Outlook.MailItem)
MSDN記事 (Outlook 2007/2010/2013/2016でも引き続き有効)
run-a-scriptルールの有効化に関する記事 それ以外の場合はセキュリティ上の理由により無効化
(レジストリキーEnableUnsafeClientMailRules
)。
Officeがバージョン1803(ビルド9126.2282)にアップグレードされた後、同様のスクリプトで同じ問題が発生しました。 Subから "Pubic"キーワードを削除することでトリックができました。理由がわからない、以来何年もの間他の方法で働いてきた。
また、消えたregキーを再度追加する必要がありました-EnableUnsafeClientMailRules。