Outlook VBAで新着メールを自動処理する方法

パソコンパソコン・スマホ教室
スポンサーリンク

皆さん、こんにちは。Outlookを使っていて、新しいメールが届いたときに自動で特定の処理ができたら便利だと思いませんか?例えば、特定のフォルダーに自動で振り分けたり、重要なメールをポップアップで知らせたり。今回は、OutlookのVBA(Visual Basic for Applications)を使って、新着メールを自動的に処理する方法をご紹介します。プログラミングの経験がない方でも大丈夫です。一緒にステップバイステップで進めていきましょう。

スポンサーリンク

新着メールを検知するための基本設定

Outlookのイメージ

Outlookのイメージ

まず、Outlookで新しいメールが届いたことを検知するための基本的な設定を行います。Outlookには、新着メールを検知するためのイベント「NewMail」や「ItemAdd」が用意されています。これらを活用して、メール受信時に自動で処理を行うことができます。

VBAエディタの起動と基本コードの入力

最初に、OutlookのVBAエディタを開きます。以下の手順で進めてください。

  1. Outlookを起動します。
  2. キーボードの「Alt」キーを押しながら「F11」キーを押して、VBAエディタを開きます。
  3. 左側のプロジェクトエクスプローラーで「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

今すぐ解決したい!どうしたらいい?

LINE公式

いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」

あなたはこんな経験はありませんか?

✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦

平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。

LINEでメッセージを送れば即時解決!

すでに多くの方が私の公式LINEからお悩みを解決しています。

最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。

誰でも無料で使えますので、安心して使えます。

問題は先のばしにするほど深刻化します。

小さなエラーがデータ消失重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。

あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。

相談しに行く

ぜひ、あなたの悩みを私に解決させてください。

まとめ

今回は、OutlookのVBAを使って新着メールを自動的に処理する方法をご紹介しました。基本的な設定から具体的な自動処理の例まで、ステップバイステップで解説しましたので、ぜひ試してみてください。他にも疑問やお悩み事があればお気軽にLINEからお声掛けください。

コメント

タイトルとURLをコピーしました