当サイトの記事にはプロモーションが含まれています。

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

まとめ

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

この記事を書いた人
この記事を書いた人

企業の情報システム部門で10年以上、PC・アカウント・社内ネットワーク・Microsoft 365/Google Workspace運用を担当。年間数百件の問い合わせ対応(PC不調、メール送受信、Excel/Word資料、Teams会議、スマホ連携など)を通じて、初心者がつまずくポイントを「再現→原因切り分け→最短解決」の手順に落とし込んできました

現場や身近で実際に起きたトラブルをベースに、手順だけでなく「なぜそうなるか」「失敗しやすい落とし穴」「安全な設定(セキュリティ)」まで含めて解説します。

相談窓口(問い合わせ/LINE等)を設け、記事で解決しないケースも個別にサポートしていますので「パソコンが急に動かなくなった」「スマホの設定がわからない」などの悩みは一人で抱え込まず、お気軽にご相談ください。

【お問い合わせは下記URLから】
https://m32006400n.xsrv.jp/inquiry-form/

【公式LINEは下記URLから】
https://lin.ee/t8TDjcj

uri uriをフォローする
スポンサーリンク
よかったらシェアしてね! /
uri uriをフォローする

コメント

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