Outlookの大量メールを毎朝ポチポチ整理しながら、そろそろマクロで自動化したいけれど難しそうと感じていませんか?
実際に長くWindowsで開発を続ける現場から、初心者でも安心して試せるマクロ設定の手順と、失敗を防ぐコツをわかりやすくまとめました。マウス操作中心の説明なのでコードが苦手でも戸惑わずに進めます。安心です。
メール仕分けや添付ファイルの一括保存がワンクリックになる快適さを想像しながら、まずは手順をなぞって体で覚えてみてください。次の受信トレイを開く頃には作業時間が半分に感じられるはずです。
Outlookマクロを作ってみよう!安心のステップバイステップ

Outlookマクロを使うと、毎日のメール整理が自動化できてぐっとラクになります。初めてでも迷わないように、開発タブの表示からマクロの記録、コードの編集、実行までを順番にご案内します。
- 開発タブを表示する:Outlookの設定画面からリボンに「開発」を追加します。
- マクロを記録する:「開発」タブの「マクロの記録」で実際のメール整理操作を行い、自動化の骨組みをキャプチャします。
- VBAエディタで微調整:記録されたコードをVBE(Visual Basic Editor)で開き、フォルダー名や条件などを自分好みに編集します。
- マクロを実行してテスト:テスト用フォルダーにメールを移動して、ボタン操作で正常に動くか確認します。
- クイックアクセスツールバーに登録:ワンクリックでマクロが走るよう、リボンかツールバーにショートカットを設定します。
この流れなら、一度覚えれば応用の幅も広がります。フォルダー名は定数化すると変更がラクになったり、コードにコメントを入れることで後から読み返しやすくなるなど、プログラマーらしいひと工夫も効きます。
もしエラーが出たら、VBEの「ツール」→「参照設定」で「Microsoft Outlook XX.0 Object Library」にチェックが入っているか確認してみてください。
マクロを使えるようにOutlookの準備をする方法

Outlookでマクロを使うには、まずリボンに開発者タブを出しておくと便利です。開発者タブを表示したら、信頼センターでVBAマクロの実行を許可しておけば、いちいち設定を見返す手間がなくなり、サクサク自動化を進められます。最初の準備は少しだけですが、これだけで安全にメール整理のマクロを楽しめるようになります。
①Outlookのファイルタブを開く
まずはOutlookのウィンドウをアクティブにして、画面左上にある「ファイル」をクリックします。リボンメニューの一番左端に並んでいるので迷わず操作できます。
「ファイル」を開くとアカウント情報やオプション設定が表示されるので、ここからマクロの設定画面にもスムーズに移動できます。
②オプションからトラストセンターを選ぶ
Outlookの左上にあるファイルタブをクリックします。
サイドメニューの下部にあるオプションをクリックして設定画面を開きます。
オプション画面の左側リストからトラストセンターをクリックします。
トラストセンターを開くとき、ほかの設定を誤って変更しないように注意してください。
③マクロの設定を「通知を表示してすべてのマクロを有効にする」に変える
Outlookを開いたら画面左上の「ファイル」タブをクリックし、左メニューから「オプション」を選びます。
「Outlookのオプション」ウィンドウで「セキュリティセンター」をクリックし、右側の「セキュリティセンターの設定」ボタンを押します。
「セキュリティセンター」画面の左メニューから「マクロの設定」を選び、オプション一覧から「通知を表示してすべてのマクロを有効にする」にチェックを入れます。
マクロを頻繁に使う場合は毎回通知が出るので、利用シーンに合わせて設定を戻すのがおすすめです。
④Outlookを再起動する
画面右上の×ボタンをクリックしてOutlookを終了します。
タスクバーのOutlookアイコンを右クリックし「ウィンドウを閉じる」を選ぶとバックグラウンドでも完全に終了できます。
数秒待ってからスタートメニューまたはタスクバーのアイコンをクリックしてOutlookを起動し直してください。
未送信のメールがあるときは、下書きフォルダに自動保存されるのを確認してから終了してください。
VisualBasicエディターで新しいマクロを書いてみる方法

VisualBasicエディターを使うと、ボタンひとつで用意された記録マクロだけでなくゼロから自分だけの処理を作り込む楽しさが味わえます。コードを書くたびに動作を確認できるので、小さな変更でも結果がしっかり実感できるのがうれしいポイントです。
- 自由度の高さ:用意された機能だけでなく、VBAの命令を自在に組み合わせて複雑な処理も実現できる
- 学びやすさ:エラーが出た行を教えてくれるので、どこを直せばいいかすぐわかる
- 再利用性:ひとたび書いたコードは他のプロジェクトでもそのまま活用できる
プログラミングに慣れたい方や、Outlookの標準機能では物足りない方にうってつけです。次のステップで、実際にエディターを開く手順からコードの書き方までわかりやすく紹介します。
①OutlookでAlt+F11を押してVBEを開く
Outlookのメイン画面を前面にしてから、キーボードのAltキーを押しながらF11キーを押します。これだけでVisual Basic Editor(VBE)が立ち上がります。
ノートPCでFnキー操作が必要な場合は、Alt+Fn+F11の組み合わせになることがあります。その場合はキーボードのFnロックを確認するとスムーズです。
②標準モジュールを挿入する
OutlookのVBAエディタを開いたら、画面上部のメニューから挿入→標準モジュールをクリックしてください。
するとプロジェクトペインに「Module1」が追加され、新しいコードウィンドウが開きます。
③サンプルコードを貼り付ける
VBAエディターの空白エリアをクリックしてカーソルを表示します。ここにあらかじめコピーしたサンプルコードを貼り付けましょう。
Sub AutoCategorize()
Dim itm As Outlook.MailItem
Dim ns As Outlook.NameSpace
Set ns = Application.GetNamespace("MAPI")
For Each itm In ns.GetDefaultFolder(olFolderInbox).Items
If itm.UnRead Then
itm.Categories = "未読"
itm.Save
End If
Next itm
End Sub
新しいモジュールに貼り付けるのがおすすめです。ThisOutlookSessionに書くと実行タイミングが変わる場合があります。
④上書き保存する
VBAエディタがアクティブな状態でCtrl+Sキーを押すか、左上のディスクアイコンをクリックしてください。これで編集したマクロがすぐに上書き保存されます。
こまめに保存することで、突然のエラーや編集ミスでコードが消えるリスクを減らせるので安心です。
書いたマクロを実行して動きを確かめる方法

マクロを書き終えたあとで動きを確認すると安心感がぐっと高まります。実際に動かしてみると処理の流れが頭に入りやすくなり、思わぬミスも早めに見つかります。
VBAエディターで作成したモジュールを開き、F5キーを押せばすぐに実行できます。またはOutlookのリボンにある開発タブ→マクロを選んで、実行したいマクロをクリックしてから[実行]ボタンを押す方法もあります。もしエラーが出たら、同じくエディター内でステップ実行(F8キー)を使うと、どの行でつまずいているかがわかりやすくなります。
①VBEでF5キーを押して実行する
Outlook上でAltキーを押しながらF11キーを押して、Visual Basic Editor(VBE)を開いてください。
エディタ画面で実行したいマクロが書かれたモジュールをアクティブにして、キーボードのF5キーを押します。
処理が始まらない場合は、カーソルが別の場所にあると認識されないことがあるので、必ずマクロ名の行かSubステートメント内にカーソルを合わせてから試してみてください。
②Outlookに戻り結果を確認する
マクロを実行したらOutlook画面に戻ってみましょう。
振り分け先のフォルダーを選んで新着メールが正しく移動しているかチェックしてください。
期待どおり動いていなければVBAエディターに戻り、条件設定やフォルダー名をもう一度見直しましょう。
マクロにショートカットキーやリボンボタンをつける方法

Outlookで作ったマクロをパパッと呼び出すには、ショートカットキーやリボンボタンに登録すると便利です。起動がスムーズになって、メール整理がさらに楽しくなりますよ。
- クイックアクセスツールバーに登録:ファイル→オプション→クイックアクセスツールバーで「マクロ」を選び、追加するとワンクリックで起動できます。
- リボンをカスタマイズ:ファイル→オプション→リボンのユーザー設定で新しいグループを作り、マクロをボタンとして配置するとタブからポンと呼び出せます。
マクロを動かすには「マクロの設定」で信頼済みの場所にVBAファイルを置いておく必要があります。セキュリティ警告が出たら許可してください。
①クイックアクセスツールバーの▼をクリックする
Outlook画面左上にあるクイックアクセスツールバーの下向き矢印を探してクリックします。
クリックするとよく使うコマンドを追加できるメニューが開きます。
矢印が薄くて見えにくい場合はカーソルを近づけると色が濃くなるポイントを確認してください。
②その他のコマンドを選ぶ
Outlook画面左上の[ファイル]をクリックして、[オプション]を開きます。
[Outlookのオプション]画面で、左側から[クイックアクセスツールバー]を選びます。
「コマンドの選択」ドロップダウンを開いて、マクロを選んでください。
一覧に表示されたマクロを選んで、[追加]ボタンで右側へ移動させます。
[OK]を押すとクイックアクセスツールバーにマクロが登録されて、ワンクリックで実行できるようになります。
マクロが一覧に出ない場合は、[開発]タブの[マクロのセキュリティ設定]でアクセス許可を確認してください。
③マクロをリストから選び追加する
Outlookの「ファイル」→「オプション」→「クイックアクセスツールバー」を開きます。
「コマンドの選択」プルダウンから「マクロ」を選び、登録したいマクロをクリックします。
真ん中の「追加」ボタンを押して、右側にマクロ名が移動していることを確認し「OK」をクリックします。
④OKを押して完了する
「カスタムUIエディタ」のウインドウ下部にあるOKボタンをクリックしてください。これで設定が保存され、マクロの準備が整います。
Outlookマクロで毎日がもっとラクになる!便利な応用アイデア

マクロの基本操作をマスターしたら、こんな応用アイデアで毎日のメール整理がもっとラクになります。
応用アイデア | 役立つシーン |
---|---|
自動返信一括設定 | 出張中や休暇中に到着メールへ定型メッセージを自動返信 |
添付ファイル整理マクロ | 受信メールの添付を指定フォルダへ自動振り分け |
定期レポート自動送信 | 毎週月曜の報告メールをテンプレートから送信 |
カレンダー予定リンク挿入 | 会議招待メールに予定表リンクを自動で追加 |
テンプレート呼び出し機能 | よく使う定型文をショートカットキーで呼び出し |
受信メールを自動でフォルダーにしまう

受信メールを指定したフォルダーに自動でしまい込むマクロはOutlookのVBAイベント機能を活かして簡単に作れます。新着メールが届くたびに条件をチェックして振り分けるので、毎日の整理作業がぐっとらくになります。
- 手動操作が減る:メールを選んでドラッグする必要がなくなります。
- ルールの統一:送信者や件名キーワードで統一ルールを設定すると、同じ条件のメールは自動でまとめてくれます。
- 自由なカスタマイズ:アドレスや件名、受信時間など、好きな条件を組み合わせてじぶんなりの振り分けが可能です。
VBEでItemAddイベントを開く
Outlookを起動してAlt+F11キーを押しVisualBasicエディタを表示します。
左側のプロジェクトエクスプローラーで「MicrosoftOutlookオブジェクト」の下にある「ThisOutlookSession」をダブルクリックします。
コードウィンドウ上部左側ドロップダウンから(General)を「Application」に切り替え右側ドロップダウンから「ItemAdd」を選びます。
これでItemAddイベントの雛形が自動で挿入されます。
条件分岐で送信者や件名を判定するコードを書く
ここでは送信者のメールアドレスや件名に応じて処理を分ける具体的な手順を紹介します。VBAのIf~Then
文とInStr
関数を使うと簡単に分岐できます。
目的のフォルダーオブジェクトを取得して移動するコードを書く
メールを移動する前に、移動先のフォルダーを表すFolderオブジェクトを用意します。Application.GetNamespace(“MAPI”)で得たNameSpaceから、受信トレイやその下のサブフォルダーをFoldersコレクションで順番に辿ると迷わずアクセスできます。
Dim ns As Outlook.NameSpace
Set ns = Application.GetNamespace("MAPI")
Dim targetFolder As Outlook.Folder
Set targetFolder = ns.Folders("受信トレイ").Folders("プロジェクト")
定型文メールをワンクリックで送る

定型文メールをワンクリックで送る方法は、VBAマクロをリボンやクイックアクセスツールバーに組み込むやり方です。よく使うあいさつや報告書のひな型をプログラムに登録しておけば、いちいち本文をコピーしたりミスを気にしたりする手間がなくなります。ボタンを押すだけで件名も本文も自動入力して即送信できるので、忙しい朝や繰り返し作業がラクになるのが大きな魅力です。初心者でもマクロのコードをコピペするだけで動かせるので、最初のステップとしてもぴったりです。
標準モジュールにテンプレート送信用プロシージャを作成する
Outlookを起動してからキーボードでAlt+F11を押し、Visual Basicエディタを表示してください。
プロジェクトエクスプローラーで自分のメールプロジェクトを右クリックし、「挿入」→「標準モジュール」を選んでください。
モジュールに以下のコードをコピー&ペーストし、必要に応じてTemplateNameを自分の下書きテンプレート名に置き換えてください。
Sub SendTemplateMail()
Dim mailItem As Outlook.MailItem
Set mailItem = Application.CreateItemFromTemplate("C:\Users\ユーザー名\AppData\Roaming\Microsoft\Templates\MyTemplate.oft")
mailItem.To = "example@domain.com"
mailItem.Subject = "件名をここに"
mailItem.Display 'または mailItem.Send
End Sub
Ctrl+Sでプロジェクトを保存したら、コード内にカーソルを置いてF5キーを押し、送信画面が正しく開くか確認してください。
宛先や本文をWith句でセットする
With句を使うと同じオブジェクトにまとまってアクセスできて、記述がすっきりします。
たとえば、メールアイテムに宛先や件名、本文をまとめて設定するには次のように書きます。
With objMail
.To = "sample@example.com"
.Subject = "テストメール"
.Body = "こんにちは。マクロから送信しています。"
End With
objMailに対して毎回「.」を付けるだけなので、繰り返しの手間が省けて見た目も分かりやすくなります。
もし文字装飾や画像を含めたいときは.Bodyの代わりに.HTMLBodyを使ってHTML形式で本文を設定しましょう。
クイックアクセスツールバーに登録して呼び出す
マクロをクイックアクセスツールバーに登録しておくと、いつでもワンクリックで呼び出せます。メール整理の作業がサクサク進むので、ぜひ試してみてください。
Outlookのリボンに「開発」タブがない場合は、ファイル→オプション→リボンのユーザー設定で「開発」にチェックを入れて有効にしてください。
リボン左上の下向き▽アイコンをクリックして「その他のコマンド」を選びます。
「コマンドの選択」から「マクロ」を選び、登録済みのマクロ名を選択して「追加」をクリックします。最後に「OK」で確定してください。
登録後はツールバーのアイコンをクリックすると、設定したマクロがすぐに実行されます。
添付ファイルをまとめてデスクトップに保存

受信トレイに届いたメールの添付ファイルをいちいち開かずにまとめてデスクトップにポンと保存できたら便利ですよね。
そんなときはOutlookのマクロでフォルダ内のメールを一気に処理すると手間がぐっと減ります。たとえば特定のフォルダにあるすべての添付を自動で拾い上げて、デスクトップ上の専用フォルダに一括保存するイメージです。
実際にやってみると、一度マクロを動かすだけでファイル名の重複チェックや日付ごとのサブフォルダ振り分けも組み込めるので、後から「あれ?どこいったっけ」という迷子も防げます。
プログラマー視点では、FileSystemObjectを使って保存先のパス操作をしっかり組んでおくと安定感がアップしますし、拡張子フィルタを加えれば必要なファイルだけサクッと拾い出せますよ。
選択したメールをループするコードを書く
まずはActiveExplorerから選択中のアイテムをSelectionオブジェクトとして受け取ります。
Selection内の各アイテムをMailItem型に変換しながら順番に処理します。
Sub LoopSelectedMails()
Dim sel As Selection
Dim mail As MailItem
Set sel = Application.ActiveExplorer.Selection
For Each mail In sel
'ここにメールごとの処理を記述
Next mail
End Sub
マクロを実行し、選択中のメールがループ内で正しく処理されるかテストします。
選択アイテムがメール以外の場合にエラーになることがあるので、MailItem型かどうかをチェックすると安心です。
添付ファイルコレクションをチェックする
メールアイテムから添付ファイル情報を取り出すには、MailItemオブジェクトのAttachmentsコレクションを利用します。まずは件数やファイル名を確認して、後続の処理に備えましょう。
対象のMailItemオブジェクトに対して、Attachmentsプロパティを使ってコレクションを取得します。
Dim atts As Outlook.Attachments
Set atts = mailItem.Attachments
Forループで各Attachmentオブジェクトを取り出し、CountやFileNameプロパティで数や名前をチェックします。実体験では、ファイル名の前後に余計な空白が入らないようTrim関数も併用すると安定しました。
Dim att As Outlook.Attachment
For Each att In atts
Debug.Print att.FileName & " (全" & atts.Count & "件)"
Next att
SaveAsFileメソッドでデスクトップへ保存する
添付ファイルをSaveAsFile
で保存するには、ファイル名にデスクトップまでのフルパスを指定します。Environ関数でユーザープロファイルを取得し、Desktopフォルダまでつなげましょう。
attachment.SaveAsFile Environ("USERPROFILE") & "\Desktop\" & attachment.FileName
この一行をループ内に組み込むだけで、受信トレイの全添付ファイルをサクッとデスクトップへ送れます。
同名ファイルがあると上書きされます。必要に応じてファイル名にタイムスタンプを追加すると安心です。
複数マクロをワンボタンで連続実行する

複数マクロをワンボタンで連続実行する方法は、作成済みの小さなマクロをまとめて呼び出す「マスターマクロ」を用意するアイデアです。これなら仕分け→ラベル付け→移動など、日常の定型作業をまとめて一気に進められます。
- クリック回数を大幅に削減:一度ボタンを押すだけで連続処理が実行される
- 手順の一貫性を維持:同じ順番でマクロを呼び出すからミスが減る
- トラブル個所が把握しやすい:処理が止まった位置で問題のマクロが特定できる
プログラマー目線のコツとしては、マスターマクロ内でApplication.Runを連続で記述する方法がおすすめです。各マクロをそのまま呼び出せるので、コードのメンテナンスもシンプルになります。
マスター用プロシージャを作り個別マクロを呼び出す
複数のマクロをまとめて実行できるマスター用プロシージャを作ることで、毎回個別のマクロを呼び出す手間を減らせます。まずはVBAエディタを起動してみましょう。
OutlookでAlt+F11を押してVBAエディタを開き、左側の「標準モジュール」を右クリックして「挿入→モジュール」をクリックします。プロパティウィンドウでモジュール名をMasterModuleに変更してください。
モジュール内に以下のコードをコピー&ペーストして、呼び出したい個別マクロ名をCallの後に並べます。
Public Sub RunAllMacros()
Call MacroA
Call MacroB
Call MacroC
End Sub
このように並べるだけで、RunAllMacrosを実行すればMacroAからMacroCまで順番に動くようになります。
個別マクロが同じプロジェクト内にないとエラーになるので、呼び出す前にすべてのマクロが有効なモジュールに存在することを確認してください。
最終行でメッセージボックスを表示する
マクロの最後にMsgBoxを追加すると処理完了を画面で知らせられます。
MsgBox "メール整理が完了しました", vbInformation
ボタン登録して一気に実行する
Outlookの画面左上にある[ファイル]をクリックして[オプション]を開きます。続けて[リボンのユーザー設定]を選び、右側のリストから開発にチェックを入れてください。そのあと[OK]を押すとリボンに「開発」タブが現れます。
再び[ファイル]→[オプション]→[クイックアクセスツールバー]を開きます。コマンドの追加欄から「マクロ」を選び、先ほど作成したマクロ名を選択して[追加]をクリックしましょう。アイコンや表示名は好みで変えられます。
Outlookのウィンドウ上部に追加されたマクロボタンを押すと、いままで行っていたメール整理の動作が一気に実行されます。動作に問題がなければ、次回からはワンクリックで速攻整理が完了です。
稀にマクロ実行時にセキュリティ警告が出る場合があります。そのときは[コンテンツの有効化]を押して続行してください。
よくある質問

- マクロを実行すると「マクロが無効にされています」と出ます
-
Outlookのセキュリティセンターでマクロの設定が「警告を表示してすべてのマクロを無効にする」になっている場合があります。ファイルタブ→オプション→セキュリティセンターに移動し、マクロを有効にしてください。実際に署名付きマクロを使うと社内でも安心して動かせました。
- 記録したマクロが見当たらないのですが?
-
マクロの記録はVBAエディターの「ThisOutlookSession」に保存されます。開発タブ→Visual Basicで左側のプロジェクトツリーを展開してください。記録中にフォルダを作り替えると切り替わることがあったので、最初に専用フォルダーを決めておくと安心です。
- マクロで特定のメールだけ振り分けたい
-
メールアイテムをループして条件を付けることでできます。例えば件名に特定の文字列が含まれる場合は移動、という流れです。For Each mail In Items If InStr(mail.Subject,”重要”)>0 Then …と書くと誤振り分けが減りました。
マクロを有効にするとセキュリティは大丈夫?
Outlookでマクロを有効にするとセキュリティ面が心配になることがあります。でも実体験からいうと、ちょっとした設定を組み合わせるだけで安全に使えるようになります。
自作マクロにはデジタル署名をつけると改ざんを防げます。
まずVisual Basicエディターでマクロにデジタル署名を追加して、トラストセンターに発行者情報を登録します。そうすると署名付きのマクロだけが動くので不正なコード混入を避けられます。さらにマクロ用のファイルは信頼できるフォルダーにまとめておくと、指定フォルダー外のマクロは自動的に無効化されるようになります。最後にトラストセンター設定で「警告を表示して有効化」にしておくと、起動時に確認ダイアログが出るので思わぬマクロ実行を防げます。
VBAの画面が英語で怖いけど日本語化できる?
Visual Basic Editorのメニューやダイアログは、Officeの表示言語と連動しています。日本語版Officeを使うと、メニューやエラーメッセージが日本語になり、英語のままだと戸惑いがちな操作もすんなり理解できます。
実際に試してみると、言語設定で日本語を優先にするだけでVBEのUIが切り替わることに驚きます。追加で言語パックをインストールする手間もほとんどなく、初学者でも安心してコード編集に集中できます。
もちろん、慣れてきたら英語UIで他サイトの情報をそのまま活用する練習もおすすめです。日本語で余裕を持って学んだあとは、英語表記への切り替えもスムーズになります。
会社のOutlookでも使っていい?
会社のOutlookでもマクロを使いたいときは、まず社内のルールをチェックしてください。会社によってはセキュリティ対策でマクロ機能をオフにしていることがあるので注意が必要です。
社内PCではIT部門がグループポリシーでマクロ実行を禁止している場合があります。
マクロが実行できないときはどうする?
動かないマクロにイライラしたことはありませんか。設定画面を開いても思うようにオンにできず、そのまま放置してしまいがちですよね。
マクロが動かない一番の理由はセキュリティ設定です。Outlookの「トラストセンター」でマクロの実行がブロックされているケースが多く、ここをしっかり確認するだけでサクッと使えるようになります。企業で使う場合は自己署名の証明書を作ると安心感もアップしますし、自分で作成したマクロが安全に動く信頼も得られます。
また、コードを標準モジュールに入れ忘れていると動かないこともありました。マクロが実行されないときはまず「VBAエディター」のプロジェクトツリーでモジュールの配置をチェックすると、意外とあっさり解決できます。
Mac版Outlookでも同じように動く?
残念ながらMac版OutlookはWindows版のVBAマクロに対応しておらず、同じ手順で動かすことはできません。実際に試したところ、メール操作を自動化するにはAppleScriptを使ったスクリプトを組むか、Microsoft 365のPower Automateを活用する必要がありました。
まとめ

これまでの手順を通じて、Outlookマクロを作成し、メールを自動で仕分ける流れをつかんでいただきました。
実際にマクロを動かすと、面倒だった同じ作業が一瞬で終わり、メール整理の時間がぐっと短くなります。
最初はドキドキかもしれませんが、自分好みにカスタマイズしていく楽しさも味わえますので、ぜひチャレンジしてみてください。快適なメール管理が待っています。