皆さん、こんにちは。Outlookを使っていて、新しいメールが届いたときに自動で特定の処理ができたら便利だと思いませんか?例えば、特定のフォルダーに自動で振り分けたり、重要なメールをポップアップで知らせたり。今回は、OutlookのVBA(Visual Basic for Applications)を使って、新着メールを自動的に処理する方法をご紹介します。プログラミングの経験がない方でも大丈夫です。一緒にステップバイステップで進めていきましょう。
新着メールを検知するための基本設定
まず、Outlookで新しいメールが届いたことを検知するための基本的な設定を行います。Outlookには、新着メールを検知するためのイベント「NewMail」や「ItemAdd」が用意されています。これらを活用して、メール受信時に自動で処理を行うことができます。
VBAエディタの起動と基本コードの入力
最初に、OutlookのVBAエディタを開きます。以下の手順で進めてください。
- Outlookを起動します。
- キーボードの「Alt」キーを押しながら「F11」キーを押して、VBAエディタを開きます。
- 左側のプロジェクトエクスプローラーで「ThisOutlookSession」をダブルクリックします。
次に、新着メールを検知するためのコードを入力します。以下のコードをそのままコピーして、先ほど開いた「ThisOutlookSession」に貼り付けてください。
vba
Private WithEvents inboxItems As Outlook.Items
Private Sub Application_Startup()
Dim outlookApp As Outlook.Application
Dim objectNS As Outlook.NameSpace
Set outlookApp = Outlook.Application
Set objectNS = outlookApp.GetNamespace("MAPI")
Set inboxItems = objectNS.GetDefaultFolder(olFolderInbox).Items
End Sub
Private Sub inboxItems_ItemAdd(ByVal Item As Object)
On Error GoTo ErrorHandler
Dim Msg As Outlook.MailItem
If TypeName(Item) = "MailItem" Then
Set Msg = Item
' ここに新着メールを受信したときの処理を記述します
MsgBox "新しいメールを受信しました: " & Msg.Subject
End If
ExitNewItem:
Exit Sub
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
Resume ExitNewItem
End Sub
このコードは、新しいメールを受信したときに、その件名を表示するメッセージボックスを表示します。コードを入力したら、VBAエディタを閉じてOutlookを再起動してください。これで、新しいメールを受信するとメッセージボックスが表示されるようになります。
新着メールに対する具体的な自動処理の例
基本的な設定ができたところで、次に新着メールに対して具体的な処理を自動で行う方法を見ていきましょう。例えば、特定の件名を持つメールを自動で別のフォルダーに移動する方法をご紹介します。
特定の件名のメールを別フォルダーに移動する
以下のコードを先ほどの「inboxItems_ItemAdd」サブプロシージャ内に追加します。このコードは、件名に「重要」という文字が含まれるメールを「重要なメール」フォルダーに移動します。
vba
If InStr(Msg.Subject, "重要") > 0 Then
Dim destFolder As Outlook.Folder
Set destFolder = Application.Session.GetDefaultFolder(olFolderInbox).Folders("重要なメール")
If destFolder Is Nothing Then
Set destFolder = Application.Session.GetDefaultFolder(olFolderInbox).Folders.Add("重要なメール")
End If
Msg.Move destFolder
End If
このコードを追加することで、件名に「重要」という文字が含まれるメールが自動的に「重要なメール」フォルダーに移動されます。フォルダーが存在しない場合は、新しく作成されます。
よくある質問や疑問
Q1: このコードはOutlookを閉じているときでも動作しますか?
いいえ、このコードはOutlookが起動しているときにのみ動作します。Outlookが閉じているときには、VBAコードも実行されません。
Q2: 特定の送信者からのメールだけを処理することはできますか?
A2: はい、可能です。「inboxItems_ItemAdd」サブプロシージャ内で、以下のように送信者のメールアドレスをチェックする条件を追加することで、特定の送信者からのメールだけを処理できます。
vba
If Msg.SenderEmailAddress = "example@example.com" Then
' 特定の送信者からのメールに対する処理
End If
まとめ
今回は、OutlookのVBAを使って新着メールを自動的に処理する方法をご紹介しました。基本的な設定から具体的な自動処理の例まで、ステップバイステップで解説しましたので、ぜひ試してみてください。他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。



コメント