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

Outlookのプロファイル修復手順を完全解説!データを消さずに直す4ステップ

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

「朝、仕事を始めようとしたら突然Outlookが起動しない。画面には意味不明なエラーメッセージ。メールが読めない、送れない、予定も確認できない。」そんな最悪の状況、あなたにも覚えがありませんか?

実はこのトラブル、世界中で毎日何十万人もが経験しています。Outlookを世界中で約4億人が利用しているほどメジャーなツールだからこそ、プロファイルの破損という問題は決して珍しい話ではありません。しかも困ったことに、2026年1月13日のWindowsアップデート(KB5074109)が原因で、POPアカウントを使っているユーザーのOutlookが一斉にフリーズするという大規模な障害まで発生したばかりです。

でも、安心してください。正しい手順を踏めば、メールデータを消すことなく確実にOutlookを復活させることができます。この記事では、初心者の方でもつまずかないよう、セーフモードの確認から新しいプロファイルの作成、ScanPSTによるデータファイル修復まで、段階を追ってわかりやすく解説します。難しそうに見えても、手順通りにやれば大丈夫。一緒に解決しましょう!

ここがポイント!

  • Outlookが起動しない根本原因は「プロファイルの破損」であることが多く、再インストールよりも修復や再作成が正解。
  • Microsoft365やIMAPアカウントなら新しいプロファイルを作成してもメールデータは消えないので、安心して試せる。
  • 2026年1月の最新Windowsアップデート起因の問題など、最新の既知バグ情報も踏まえて対処法を紹介。
スポンサーリンク
  1. まず知っておこう!「プロファイル」ってそもそも何?
    1. プロファイルとデータファイルの違い
    2. プロファイルが壊れる主な原因
  2. このエラー、見覚えありますか?プロファイル破損のサインを見抜く
  3. Outlookのプロファイル修復手順4段階で完全解決!
    1. ステップ1セーフモードで起動を試す(所要時間約2分)
    2. ステップ2アカウント設定から「修復」を実行する(所要時間約5分)
    3. ステップ3新しいプロファイルを作成する(最も確実な方法・所要時間約10分)
    4. ステップ4ScanPST.exeでデータファイルを直接修復する(上級者・POP接続ユーザー向け)
  4. バージョン別・接続方式別の対処法まとめ
  5. プロファイルの破損を防ぐ!日頃のメンテナンス習慣
  6. Outlookが「なぜ壊れるのか」を内部構造から理解する
    1. New OutlookとクラシックOutlookでOSTの扱いが根本的に違う
  7. 誤送信は「気をつける」では防げない!設定で仕組みを作る3段構え
    1. 第1段遅延送信で「取り消せる時間」を設計する
    2. 第2段外部ドメイン宛て送信時に警告を出すVBAマクロ
    3. 第3段「全員返信でBCCが外れる」問題の仕組みと恒久対策
  8. 仕分けルールが「突然効かなくなる」本当の理由と競合しない設計の原則
    1. ルール競合・順序・件数上限の3つの罠
    2. 受信トレイゼロを実現するフォルダ設計の考え方
    3. 自動アーカイブで「知らない間にメールが消えた」を防ぐ
    4. 知らないと損する!Outlookの実務ショートカット
  9. PSTファイルの緊急障害対応マニュアル症状別・完全版
    1. 症状A「このフォルダーのセットを開けません。既定の電子メールフォルダーが見つかりません」
    2. 症状BOSTファイルが肥大化してOutlookが異常に重い
  10. Exchange Online(M365)とオンプレExchangeで「別物」になる機能一覧
    1. M365移行後に「できなくなった」あるある5選
  11. 現場の「あるある困った」5選情シス15年の本音解決集
    1. 困った①送信直後に誤送信に気づいた。取り消せるか?
    2. 困った②「昨日まであったはずのメールが突然消えた」
    3. 困った③仕分けルールを20個以上設定したら動かなくなった
    4. 困った④Outlookが起動後しばらくしてフリーズする
    5. 困った⑤会議招集を送ったのに参加者の予定表に反映されない
  12. 今すぐ使えるOutlook実務VBAコード集
    1. 受信トレイの未読メールをCSVに一括出力するマクロ
    2. 予定表の今月の予定をExcelに出力するマクロ
    3. 件名が空白・添付忘れを送信前に検出する複合チェックマクロ
  13. ぶっちゃけこうした方がいい!
  14. Outlookのプロファイル修復に関する疑問を解決!
    1. 新しいプロファイルを作ると、過去のメールや予定は本当に消えないの?
    2. ScanPSTを実行したのにフォルダや中身がなくなってしまった。どうすれば?
    3. 「修復」ボタンがグレーアウトしていてクリックできない。なぜ?
    4. 同じトラブルが何度も繰り返されるのはなぜ?
  15. 今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?
  16. まとめ

まず知っておこう!「プロファイル」ってそもそも何?

Outlookのイメージ

Outlookのイメージ

修復手順に入る前に、「プロファイル」という言葉の意味をざっくり理解しておきましょう。ここを知っていると、なぜ壊れるのか・なぜこの手順で直るのかが腑に落ちて、作業がぐっとスムーズになります。

Outlookのプロファイルとは、一言で言えば「あなた専用のOutlook設定パッケージ」です。具体的には、どのメールアドレス(例taro@example.com)を使うか、そのパスワードやサーバー情報、メールデータファイル(.pstや.ost)がPCのどこに保存されているか、さらには表示のカスタマイズ設定まで、Outlookを動かすために必要なすべての情報が詰め込まれています。

プロファイルとデータファイルの違い

ここで少しだけ大事な区別を。プロファイルとデータファイルは別物です。プロファイルはOutlookを動かすための「設定書類一式」、データファイル(.pstや.ost)はメール本文・連絡先・予定表などの「中身の実体」です。

POP方式のメールアカウントはデータを.pstファイルとしてPC内に保存します。一方、IMAP方式やMicrosoft365のアカウントはサーバー側にデータの本体があり、PC内の.ostファイルはそのコピーに過ぎません。この違いが、後ほど「新しいプロファイルを作っても大丈夫な理由」に直結してきます。

プロファイルが壊れる主な原因

プロファイルは、長年使い続けるうちに少しずつ不安定になっていきます。主な原因として挙げられるのは、Windowsアップデートとの競合、Outlookの強制終了、データファイルの肥大化、ウイルスやマルウェアの感染、PC本体の突然のシャットダウンなどです。特に注目すべきは、2026年1月13日にリリースされたWindowsアップデート(KB5074109)が、POPアカウントを使うクラシックOutlookのプロファイルを大規模にフリーズさせるという問題を引き起こしたこと。マイクロソフトは同年1月24日にKB5078127として修正パッチを公開しましたが、こうした「アップデートが引き金になる破損」は今後も起こり得るため、常に最新の情報をチェックする習慣が重要です。

このエラー、見覚えありますか?プロファイル破損のサインを見抜く

Outlookのトラブルには様々な症状がありますが、プロファイルの破損が原因の場合、いくつかの典型的なサインがあります。自分の状況と照らし合わせてみてください。

「Microsoft Outlookを起動できません。Outlookウィンドウを開けません。」というエラーは最も代表的なメッセージです。これはナビゲーションウィンドウの設定ファイルが壊れているか、プロファイル名のXMLファイルが0KBになってしまったときに表示されます。

「このフォルダーのセットを開けません。」というメッセージや、起動途中の「プロファイルの読み込み中」画面で固まってしまう症状も典型的です。また、一見起動できたようでも、すぐにフリーズしたり動作が異常に重くなったりする場合も、プロファイルやデータファイルの破損が疑われます。

これらの症状が出ていても、慌ててOfficeをアンインストール・再インストールする必要はありません。まずは以下の手順を試しましょう。

Outlookのプロファイル修復手順4段階で完全解決!

ここからがいよいよ本番です。簡単な方法から順番に試していくことが鉄則です。いきなり難しい操作に飛びつくと、時間を無駄にするだけでなく、データを傷つけるリスクもあります。

ステップ1セーフモードで起動を試す(所要時間約2分)

最初に試すべきは、Outlookをセーフモードで起動することです。セーフモードとは、アドイン(追加機能プラグイン)などを一切読み込まない、最小限の構成で起動するモードです。もしこれで起動できれば、プロファイル本体は無事で、特定のアドインが原因だとわかります。

  1. キーボードのWindowsキー+Rを同時に押し、「ファイル名を指定して実行」ウィンドウを開きます。
  2. テキストボックスに
    outlook /safe

    と入力します(「outlook」と「/safe」の間に半角スペースが必要です)。

  3. OKをクリックして、Outlookが起動するか確認します。

セーフモードで起動できた場合は、「ファイル」→「オプション」→「アドイン」を開き、怪しいアドインを一つずつ無効にして原因を探っていきましょう。セーフモードでも起動しない場合は、問題はプロファイル自体にあると考えてステップ2へ進みます。

ステップ2アカウント設定から「修復」を実行する(所要時間約5分)

Outlookには、アカウント設定の画面から直接プロファイルを修復する機能が組み込まれています。まずはこの公式機能を試します。Outlookが全く起動できない場合はステップ3へ進んでください。

  1. Outlookを起動し、「ファイル」タブをクリックします。
  2. 「アカウント情報」画面で「アカウント設定」→「アカウント設定」をクリックします。
  3. 「電子メール」タブで修復したいアカウントを選択し、「修復」ボタンをクリックします。
  4. 画面の指示に従い、メールアドレスとパスワードを入力して「修復」をクリックします。
  5. 「アカウントが正常に修復されました」と表示されたら「完了」をクリックし、Outlookを再起動します。

なお、Outlook 2016でExchangeアカウントを使っている場合は「修復」ボタンが表示されません。その場合はステップ3の新しいプロファイル作成へ直接進みましょう。

ステップ3新しいプロファイルを作成する(最も確実な方法・所要時間約10分)

ステップ2で解決しない場合、壊れたプロファイルにこだわるのは諦め、まっさらな新しいプロファイルを作るのが最も根本的で確実な解決策です。「データが消えるのでは?」と心配する方がいますが、Microsoft365やIMAPアカウントのメールデータはサーバー上にあるため、新しいプロファイルを作成しても消えません。新しいPCにOutlookを設定するのと同じ原理で、サーバーから全データが自動的に再同期されます。

  1. Outlookを完全に終了します(タスクバーのアイコンを右クリックして「ウィンドウを閉じる」)。
  2. Windowsの検索ボックスに「コントロールパネル」と入力して開きます。
  3. 表示方法を「大きいアイコン」または「小さいアイコン」に変更し、「Mail (Microsoft Outlook)」をクリックします。
  4. 「メール設定」ウィンドウで「プロファイルの表示」をクリックします。
  5. 「追加」ボタンをクリックし、新しいプロファイルに任意の名前(例「新しいOutlook」)を付けてOKをクリックします。
  6. メールアドレスとパスワードを入力し、画面の指示に従ってアカウント設定を完了させます。
  7. 「常にこのプロファイルを使用する」を選択し、新しいプロファイル名を選んでOKをクリックします。
  8. Outlookを起動し、メールが同期され始めれば成功です!

新しいプロファイルで問題なく動作することを確認したら、古いプロファイルは「プロファイルの一覧」画面から削除してしまって構いません。キャッシュやゴミが完全にクリアされ、Outlookがより軽快に動くようになります。

ステップ4ScanPST.exeでデータファイルを直接修復する(上級者・POP接続ユーザー向け)

POPアカウントをお使いの場合や、過去のメールを.pstファイルとしてPC内に保存している場合は注意が必要です。この場合、プロファイルだけでなくデータファイル自体が壊れている可能性があります。そのときに使うのが、マイクロソフトが公式に提供している「受信トレイ修復ツール(ScanPST.exe)」です。

重要な注意このツールを使う前に、必ず対象の.pstファイルのコピーをバックアップとして別の場所(外付けHDDなど)に保存してください。万が一の事態に備えることが大原則です。

ScanPST.exeの場所は、Officeのバージョンによって異なります。Outlook 2019および2016の場合は

C:\Program Files (x86)\Microsoft Office\root\Office16

フォルダの中に入っています。Windowsの検索ボックスに「SCANPST.EXE」と入力して検索するのが最も手っ取り早い方法です。

  1. Outlookを完全に終了した状態でScanPST.exeを起動します。
  2. 「参照」をクリックし、修復したい.pstファイルまたは.ostファイルを選択します。ファイルは通常
    C:\Users\ユーザー名\Documents\Outlook Files

    または

    C:\Users\ユーザー名\AppData\Local\Microsoft\Outlook

    の中にあります。

  3. 「開始」をクリックしてスキャンを実行します。
  4. エラーが検出されたら「修復」ボタンをクリックします。修復中に自動的にバックアップファイル(.bakという拡張子)が作成されます。
  5. 「修復が完了しました」と表示されたらOKをクリックし、Outlookを起動して動作を確認します。

修復後、Outlookのフォルダウィンドウに「回復された個人用フォルダ」や「Lost and Found」というフォルダが表示されることがあります。これは修復ツールが元の場所に戻せなかったアイテムを集めたフォルダです。中身を確認し、必要なメールは別のフォルダに手動で移動させてください。

ScanPSTには限界もあります。ひどく破損したファイルや、パスワードで保護されたファイルはScanPSTでは修復できません。また、完全に削除されたアイテムは回復されない場合があります。ScanPSTで解決しない場合は、Stellar Repair for OutlookやWondershare Repairit for Emailなどのサードパーティ製修復ツールも選択肢に入ります。これらはScanPSTよりも高度なアルゴリズムで深刻な破損にも対応できますが、有料製品であることを念頭に置いておきましょう。

バージョン別・接続方式別の対処法まとめ

Outlookのバージョンや使っているアカウントの種類によって、最適な対処法が少し異なります。以下の表を参考にしてください。

状況 推奨される対処法
Microsoft365 / IMAPアカウントを使用中 新しいプロファイルを作成(データはサーバーから再同期)
POPアカウントを使用中 先にScanPSTでデータファイルを修復してから新プロファイル作成
Outlook 2016でExchangeアカウントを使用中 「修復」ボタンは使えないため、新しいプロファイルを直接作成
セーフモードでは起動できる アドインを一つずつ無効化して原因を特定
2026年1月のWindowsアップデート後に発生 KB5078127を適用して最新のWindowsにアップデートする

プロファイルの破損を防ぐ!日頃のメンテナンス習慣

修復できたとしても、また同じトラブルが繰り返されては困りますよね。プロファイルの破損を未然に防ぐための習慣をいくつか身につけておきましょう。

まず最も重要なのは、Outlookを正しく終了させることです。「×ボタン」でウィンドウを閉じるだけでなく、タスクトレイのOutlookアイコンを右クリックして「Outlookを終了」するか、PCをシャットダウンする前に必ずOutlookが完全に閉じているか確認する習慣をつけましょう。強制終了が繰り返されると、データファイルが少しずつ傷ついていきます。

次に、WindowsとOfficeのアップデートを常に最新の状態に保つことです。2026年1月の事例のように、アップデートが問題を引き起こすこともありますが、長期的にはセキュリティパッチや不具合修正が積み重なっており、アップデートを怠る方がリスクは高くなります。

さらに、定期的なバックアップも欠かせません。特にPOPアカウントで.pstファイルにメールを保存している場合は、週に一度など定期的にそのファイルを外付けストレージにコピーしておくことで、万が一の際でもデータを失わずに済みます。Outlookの「ファイル」→「開く/エクスポート」→「インポート/エクスポート」からバックアップを作成できます。

最後に、不要なアドインを整理することも効果的です。長年Outlookを使っていると、気づかないうちに多くのアドインが溜まっていることがあります。「ファイル」→「オプション」→「アドイン」から、使っていないアドインは積極的に無効化しましょう。

※この記事の手順は特に断りのない限り Outlook for Microsoft 365(Windows版・月次チャネル) を基準にしています。Exchange Online環境・オンプレExchange・New Outlook(新しいOutlook)・Outlook on the web(OWA)で挙動が異なる箇所は都度明記します。

Outlookが「なぜ壊れるのか」を内部構造から理解する

Outlookのイメージ

Outlookのイメージ

既存の解説では「プロファイルが壊れる原因」を列挙しましたが、ここではもう一歩踏み込んで「Outlookの内部でいったい何が起きているのか」を説明します。これを知っておくと、同じトラブルを二度繰り返さない判断ができるようになります。

Outlookは起動すると、まずMAPIプロトコルという通信規格を使ってプロファイルの設定を読み込み、Exchangeサーバー(またはIMAPサーバー)との接続を確立します。そしてサーバー上のメールボックスのコピーとして.ostファイル(オフラインストレージ)をローカルに保持し、接続が切れた状態でも過去のメールを読み書きできるキャッシュとして機能させています。

ここで重要なのは、.ostファイルは「サーバーとの同期トランザクションログ」も内包しているという点です。Outlookがメールを送受信するたびにこのログに書き込みが発生するため、強制終了やPC突然シャットダウンが起きると、書き込みの途中でファイルが閉じられてしまい、ヘッダー情報が整合しなくなります。これがプロファイルの「破損」と呼ばれる現象の正体です。毎日何千通もメールをやりとりする法人環境では、この書き込み頻度が高く、破損リスクがじわじわ蓄積します。

New OutlookとクラシックOutlookでOSTの扱いが根本的に違う

これ、誰も教えてくれないんですけど、2023年以降にMicrosoftが展開している「New Outlook(新しいOutlook)」はアーキテクチャが全く別物です。クラシックOutlookがローカルの.ost/.pstファイルを中心に動くのに対し、New OutlookはOutlook on the web(OWA)をベースにしたウェブアプリ的な設計で、ローカルへのキャッシュの仕組みがまったく異なります。そのためScanPSTはNew Outlookには基本的に無関係です。New Outlookでトラブルが起きた場合は、Windowsの「設定」→「アプリ」からOutlookアプリを修復またはリセットする手順が正しいアプローチになります。

現時点(2026年4月)では、多くの法人環境ではまだクラシックOutlookを使い続けているケースが大半ですが、Microsoft 365のテナント管理者が「New Outlookへの自動移行」を許可している場合、ユーザーが気づかないうちに切り替わっていることがあります。「今まで使えていたScanPSTが急に効かない」と感じたら、まず自分がどちらのOutlookを使っているか確認しましょう。

誤送信は「気をつける」では防げない!設定で仕組みを作る3段構え

情シスとして15年やってきて確信があるんですが、誤送信は意識では防げません。どれだけ「注意します」と言っても、人間は必ず間違えます。だから設定で仕組みを作るしかない。実際に私が自社で実装した「誤送信防止の3段構え」を全部お伝えします。

⚠️ 誤送信リスクの深刻さ
内閣サイバーセキュリティセンター(NISC)の調査でも、情報漏洩インシデントの原因として「メール誤送信」は毎年上位に入ります。一度送ったメールは取り消せません。送信前に止める仕組みこそが唯一の防衛線です。

第1段遅延送信で「取り消せる時間」を設計する

最もコストゼロで今すぐ設定できる対策が、送信の遅延です。「送信」ボタンを押してから実際にメールが飛ぶまでに数分の猶予を設けることで、「送った直後に添付ファイルが違ったことに気づいた!」という場面で間に合います。

設定方法は

ファイル > オプション > 詳細設定 > 送受信

から「送受信グループ」を開き、「次の時間間隔で自動的に送受信を実行する」の分数を調整します。ただしこれは定期実行の間隔であり、「送信ボタンを押したメールを一時的に送信トレイに留める」のとは別の設定です。送信保留の確実な方法は、後述のVBAマクロを使う方法と、ルールで「送信後に送信トレイにコピーを置く」方法があります。

より確実に「n分間は送信トレイに留める」設定をするには、

ホーム > ルール > ルールと通知の管理

を開き、「新しいルール」→「送信メッセージにルールを適用する」→「条件なし(すべてのメールに適用)」→「配信を遅らせる(〇分後)」を選択します。Exchange Online環境でこの設定をすると、ルールはサーバー側でも機能するため、モバイルのOutlookアプリで送信したメールも遅延が適用される点が重要です。オンプレExchange環境では、このルールはクライアント側ルールとして動作するため、Outlookが起動していないと機能しない場合があります。

第2段外部ドメイン宛て送信時に警告を出すVBAマクロ

社内ドメイン宛てのミスよりも怖いのが、「社外に機密情報を誤送信してしまった」ケースです。VBAを使えば、社外アドレスに送信しようとしたときに確認ダイアログを出す仕組みを自分で作れます。

⚠️ VBAコード実行前の必須事項
以下のコードを実行する前に、必ず

ファイル > 開く/エクスポート > インポート/エクスポート

からOutlookデータファイル(.pst)のバックアップを取ってください。マクロによる操作はアンドゥできません。

' ========================================
' マクロ名外部ドメイン送信警告マクロ
' 用途社外ドメイン宛てのメール送信前に確認ダイアログを表示する
' 動作確認済みOutlook 2019(スタンドアロン)/
' Microsoft 365(月次チャネル)/ Exchange Online環境
' 動作するバージョンOutlook 2016以降
' 動作しないバージョンOutlook 2013以前(ItemSendイベントの挙動が不安定)
' Exchange環境での注意対応(ただし送信はクライアント側で制御)
' M365テナントのマクロ設定マクロを有効にする設定が必要
' (セキュリティセンター > マクロの設定 > 「署名済みマクロのみ有効」推奨)
' 実行方法ThisOutlookSessionモジュールに貼り付けるだけで自動動作
' セキュリティ注意社内ドメインのリストを正確に設定すること。
' 未設定のまま使うとすべての送信でダイアログが出ます
' ========================================

' ※このコードはThisOutlookSessionモジュールに記述してください

' 社内ドメインのリスト(カンマ区切りで追加してください)
Const INTERNAL_DOMAINS As String = "@example.co.jp,@example.com"

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
' メールアイテム以外は処理しない
If Item.Class <> olMail Then Exit Sub

Dim objRecipients As Outlook.Recipients
Dim objRecipient As Outlook.Recipient
Dim strAddress As String
Dim blnExternalFound As Boolean
Dim strExternalList As String
Dim arrDomains() As String
Dim blnInternal As Boolean
Dim i As Integer

On Error GoTo ErrorHandler

' 社内ドメインを配列に分割
arrDomains = Split(INTERNAL_DOMAINS, ",")

blnExternalFound = False
strExternalList = ""

Set objRecipients = Item.Recipients

' 全宛先をチェック
For Each objRecipient In objRecipients
' 宛先を解決(アドレス帳から実際のメールアドレスを取得)
objRecipient.Resolve
strAddress = objRecipient.Address

' Exchange環境ではアドレスがX500形式になる場合があるため
' SMTPアドレスを取得する
If InStr(strAddress, "@") = 0 Then
On Error Resume Next
strAddress = objRecipient.PropertyAccessor.GetProperty( _
"http://schemas.microsoft.com/mapi/proptag/0x39FE001E")
On Error GoTo ErrorHandler
End If

' 社内ドメインかどうかを判定
blnInternal = False
For i = 0 To UBound(arrDomains)
If InStr(LCase(strAddress), LCase(Trim(arrDomains(i)))) > 0 Then
blnInternal = True
Exit For
End If
Next i

' 社外アドレスならリストに追加
If Not blnInternal Then
blnExternalFound = True
strExternalList = strExternalList & " ・" & strAddress & vbCrLf
End If
Next objRecipient

' 社外宛てが含まれていたら確認ダイアログを表示
If blnExternalFound Then
Dim strMessage As String
strMessage = "【送信前確認】以下の社外アドレスが含まれています。" & vbCrLf & vbCrLf
strMessage = strMessage & strExternalList & vbCrLf
strMessage = strMessage & "件名" & Item.Subject & vbCrLf

' 添付ファイルがある場合は追加警告
If Item.Attachments.Count > 0 Then
strMessage = strMessage & vbCrLf & "⚠️ 添付ファイルが " & Item.Attachments.Count & " 件あります。" & vbCrLf
End If

strMessage = strMessage & vbCrLf & "このまま送信しますか?"

Dim intResponse As Integer
intResponse = MsgBox(strMessage, vbYesNo + vbExclamation + vbDefaultButton2, "社外送信の確認")

' 「いいえ」を選択した場合は送信をキャンセル
If intResponse = vbNo Then
Cancel = True
MsgBox "送信をキャンセルしました。宛先・添付ファイルを確認してください。", vbInformation
End If
End If

Exit Sub

ErrorHandler:
' エラーが発生した場合も安全のため送信確認を行う
Dim intErrResponse As Integer
intErrResponse = MsgBox("宛先チェック中にエラーが発生しました。" & vbCrLf & _
"件名" & Item.Subject & vbCrLf & vbCrLf & _
"このまま送信しますか?", vbYesNo + vbExclamation, "送信確認(エラー)")
If intErrResponse = vbNo Then Cancel = True
End Sub

第3段「全員返信でBCCが外れる」問題の仕組みと恒久対策

これ、本当に怖い話なんですが、BCCで受け取ったメールに「全員に返信」すると、BCCアドレスが返信先から外れるどころか、BCCで受け取ったことが他の受信者に伏せられたまま全員に返信されてしまいます。つまり「BCCで送られたから自分だけが受け取ったと思っていたのに、全員に返信して情報漏洩」というパターンです。

これはOutlookのバグではなく、メールプロトコル(RFC)の仕様です。BCCはメールヘッダーに記録されないため、受信時点でOutlookはそのメールが自分へBCC送信されたものかどうか判断できません。根本的な回避策は「BCCで届いたメールへの全員返信を組織として禁止する運用ルール」を整備することです。情シス観点では、Exchangeの「トランスポートルール」を使って、BCC受信メールへの全員返信を検知・ブロックする設定も可能ですが、これは管理者権限が必要です。

仕分けルールが「突然効かなくなる」本当の理由と競合しない設計の原則

「昨日まで動いていたルールが今日は動かない」「振り分けられるはずのメールが受信トレイにたまっている」——この相談、情シスとして何十回受けたかわかりません。原因は毎回ほぼ同じです。

ルール競合・順序・件数上限の3つの罠

Outlookの仕分けルールには実行順序があり、上から順番に評価されます。ルールの設定画面(

ホーム > ルール > ルールと通知の管理

)を開くと、ルールが一覧で並んでいますが、この並び順こそが実行順序です。問題の核心は「処理を中止する」チェックボックスの扱いです。

このチェックが入っていないルールは、条件に一致しても次のルールの評価が続きます。つまり、「A社からのメールをAフォルダへ移動」というルールがあり、別のルールで「重要度を高に設定する」という処理が設定されていて両方の条件に一致するとき、どちらも実行されます。一方、「A社からのメールをAフォルダへ移動し、処理を中止する」と設定されていれば、後続のルールは評価されません。

もう一つの盲点が件数上限です。Exchange Online環境では、クライアント側ルールとサーバー側ルールを合わせて最大256KBまでという制限があります。ルールを長年追加し続けると、この上限に達してルールが無効化されてしまいます。「ルールが突然消えた」という報告の多くはこれです。対策は定期的な不要ルールの削除と、ルール名・条件を短く書くことです。

受信トレイゼロを実現するフォルダ設計の考え方

多くの人が受信トレイをフォルダとして使っていますが、受信トレイは「一時置き場」であって「保管場所」ではありません。この認識を変えるだけでOutlookの使い勝手が激変します。私が推奨している設計は、受信トレイの直下にフォルダを作りすぎず、「@要対応」「@確認待ち」「@参考」の3つの役割フォルダ+プロジェクト別フォルダというシンプルな構造です。フォルダ名の先頭に「@」をつけるとアルファベット順でリストの上位に表示されるため、素早くアクセスできます。

自動アーカイブで「知らない間にメールが消えた」を防ぐ

オートアーカイブはデフォルトで有効になっているケースがあり、気づかないうちに古いメールが別のPSTファイルに移動していた、という事態が起きます。特に「去年のあのメールがない!」という状況の原因の多くがこれです。

設定確認は

ファイル > オプション > 詳細設定 > 自動アーカイブの設定

から行います。法人環境ではオートアーカイブを無効にして、Microsoft 365のオンラインアーカイブ(Exchange Online Archiving)に統合するのが現在のベストプラクティスです。オンラインアーカイブはクラウド上に保存されるため、PCが壊れてもデータは失われません。オンプレExchangeの場合はオンラインアーカイブが利用できないため、適切なサイズに達したら手動でPSTに分割してバックアップする運用が一般的です。

New Outlook(新しいOutlook)での挙動New OutlookではオートアーカイブのUI自体が存在しません。Microsoft 365のオンラインアーカイブのみ対応しています。クラシックOutlookからNew Outlookに移行した際、オートアーカイブで移動されたPSTファイルの中身が「どこかに消えた」と感じるユーザーが続出しています。移行前に必ずオートアーカイブの状況を確認してください。

知らないと損する!Outlookの実務ショートカット

一般ユーザーが知らないまま使い続けていることが多い、生産性直結のショートカットを整理します。Ctrl+Shift+Gはフラグと期日の設定ダイアログを開くキーで、メールをタスク化するのに一番速い操作です。Ctrl+1/2/3でメール・予定表・連絡先ビューを素早く切り替えられます。メール作成中にAlt+Sで送信、Ctrl+Kで宛先の名前解決(アドレス帳から自動補完)ができます。検索はCtrl+Eで検索ボックスにフォーカスが当たり、Ctrl+Alt+Aで全フォルダを横断検索できます。

また、「検索フォルダ」は多くの人が使っていないのにすごく便利な機能です。

フォルダー > 新しい検索フォルダー

から作成でき、「未読メールすべて」「フラグ付きメールすべて」といった動的な仮想フォルダを作れます。実体はどこかに移動しているわけではなく、条件に一致するメールをリアルタイムに表示する「スマートフォルダ」です。受信トレイの整理とは独立して機能するため、複数プロジェクトを掛け持ちしている方に特におすすめです。

PSTファイルの緊急障害対応マニュアル症状別・完全版

ここでは既存記事で触れたScanPSTの基本手順に加えて、「あのメールが絶対に必要なのに開けない」という緊急事態に対応するための詳細手順を情シス視点で解説します。

症状A「このフォルダーのセットを開けません。既定の電子メールフォルダーが見つかりません」

原因の切り分けこのエラーはプロファイルが参照しているPSTファイルのパスが変わったか、PSTファイル自体が移動・削除されている場合に出ます。まず

ファイル > アカウント設定 > データファイル

タブを開き、PSTファイルの場所が正しいか確認してください。パスに「!」マークが付いていたらそのファイルが見つかっていません。

PSTファイルの場所確認コマンドエクスプローラーのアドレスバーに

%LOCALAPPDATA%\Microsoft\Outlook

と入力すると、デフォルトの保存先フォルダが開きます。

ScanPSTで直らない場合の次の手順ScanPSTを複数回(2〜3回)実行してもエラーが消えない場合、ファイルの破損が深刻なため、新しいPSTファイルを作成して「Lost and Found」から回収できたアイテムを移行するか、サードパーティ製ツールの使用を検討します。絶対にやってはいけないのは、破損したPSTファイルをいきなり削除することです。ScanPSTが作ったバックアップ(.bak)も含め、すべてのファイルを別ドライブに退避させてから作業してください。

二度と起こさない予防設定PSTファイルの適正サイズは現在のOutlookでは理論上50GBまで対応していますが、実運用では10GB以下を維持することを推奨します。ファイルサイズが大きくなるほど、破損時の修復時間が指数関数的に増え、修復できない確率も上がります。

ファイル > アカウント設定 > データファイル > 設定

からファイルサイズの上限を設定できます。

症状BOSTファイルが肥大化してOutlookが異常に重い

なぜこれが起きるかExchange OnlineやIMAPアカウントの.ostファイルは、デフォルトでは「キャッシュ同期するメールの期間」を無制限に設定している場合があります。数年分のメールが全部ローカルにキャッシュされている状態です。

根本解決の手順

ファイル > アカウント設定 > 電子メール > 変更

から「オフラインにするメールの期間」を「3か月」や「1年」に制限します。設定後、古いキャッシュが削除されOSTファイルが縮小します。ただしExchange Online環境では管理者がポリシーでこの設定を制限している場合があります。グレーアウトしていたら管理者に確認が必要です。

⚠️ OSTファイルを「直接削除」して直そうとするのはNG!
ネット上でよく見かける「OSTファイルを削除してOutlookに再作成させる」という方法は、Exchange Online・IMAP環境であればサーバーから再同期されるため技術的には有効ですが、同期に非常に時間がかかります。社内のExchangeサーバーへの負荷も高く、大企業環境では管理者に無断で実行すべきではありません。実行前に必ず情シス担当者に確認してください。

Exchange Online(M365)とオンプレExchangeで「別物」になる機能一覧

M365に移行したばかりの方や、社内に両方の環境が混在している方向けに、挙動が変わる主要機能を整理します。「今まで使えていたのに急に使えなくなった」の9割はここに起因しています。

機能名 Exchange Online(M365) オンプレExchange New Outlookでの挙動 ユーザーか管理者か
共有メールボックスへのアクセス 自動マッピング機能あり(管理者がライセンス付与後、自動で追加される) 手動でアカウントとして追加が必要 対応(ただし一部機能制限あり) 管理者の権限設定が必要。ユーザーは申請のみ
代理送信(送信者として送る) 管理センターで「代理人として送信」権限を付与。From欄に代理人名が表示される 同左だがUIの場所が異なる場合あり 対応 管理者に依頼が必要
メールの自動転送 デフォルトで社外への自動転送が無効化されているテナントが多い。転送先が社外の場合は管理者による設定変更が必要 制限なし(組織ポリシーによる) OWAからも設定可だが、テナントポリシーが優先される 社外転送は管理者に依頼。社内転送はユーザーが設定可
保持ラベル・保持ポリシー Microsoft Purviewで一元管理。メールが自動的に保持・削除されるルールが管理者により設定される Exchange管理センターのメッセージングレコード管理(MRM) 保持ラベルの表示は対応。設定変更はOWAまたはPurviewから 管理者のみ設定可能
送信取り消し(Recall) 同一テナント内の受信者が未読の場合のみ有効。読まれた後は取り消し不可 同左(オンプレExchange内のみ有効) M365版では「送信取り消し」の成否レポートが確認可能 ユーザーが実行可。ただし機能に限界あり
会議室(リソースメールボックス)予約 Exchange管理センターでリソースメールボックスを作成。Outlookの会議招集から直接空き状況を確認できる 同左だがAD連携の設定が別途必要 予約機能対応。ただし詳細な設定はクラシックOutlookの方が豊富 リソースの作成は管理者。予約はユーザーが可能

M365移行後に「できなくなった」あるある5選

公式ドキュメントには書いてないんですが、Exchange環境だと話が変わってくることがあります。移行後によく受ける相談をまとめました。

①「社外にメールを自動転送できなくなった」M365テナントではデフォルトでアウトバウンド自動転送が無効になっているケースが多いです。Gmailへの転送も含め、社外への自動転送は管理者によるトランスポートルールの変更が必要です。

②「会議招集のメールが届かなくなった(招集者のみ)」Exchange Onlineの自動処理(AutoAccept)が有効になっているリソースメールボックスは、招集メールを自動で承認・削除するため、送信者の受信トレイに確認メールが届かなくなります。会議室の予約確認はOutlookの予定表の会議アイテムから直接確認してください。

③「フォルダに古いメールが見えなくなった(同期期間の制限)」前述のOSTキャッシュ期間の設定で、同期対象期間より古いメールはローカルに表示されなくなります。サーバー上には存在するため、OWA(Outlook on the web)からはアクセスできます。

④「アドインが突然使えなくなった」M365テナントの管理者が「承認済みアドイン以外を無効化」するポリシーを設定している場合、ユーザーが独自にインストールしたアドインが無効化されます。管理者にアドインの許可申請が必要です。

⑤「VBAマクロが実行できなくなった」M365のセキュリティポリシーでマクロ実行が「すべて無効(通知なし)」に設定されている環境が増えています。後述のVBAコードが動かない場合は、

ファイル > オプション > セキュリティセンター > セキュリティセンターの設定 > マクロの設定

を確認してください。ただしこの設定自体が管理者によってグループポリシーでロックされている場合は、管理者への変更依頼が必要です。

現場の「あるある困った」5選情シス15年の本音解決集

困った①送信直後に誤送信に気づいた。取り消せるか?

困った状況「送信してから30秒後に、添付ファイルが違うことに気づいた。取り消せますか?」という問い合わせが毎週来ます。

なぜこれが起きるか人間の確認習慣は「送信ボタンを押した後」に活性化します。これは認知バイアスの問題で、送信前は「大丈夫だろう」という確証バイアスが働きます。Outlookの設定で事前に防げていたはずの事故です。

その場でできる応急処置

  1. 送信済みアイテムを開き、対象のメールを選択します。
  2. ホーム > その他の操作 > このメッセージを取り消す

    を選択します(クラシックOutlookのみ。New Outlookでは「送信取り消し」機能のUIが変わっています)。

  3. 「未読の場合は削除する」を選択してOK。
  4. 同一Exchange組織内の宛先が未読であれば取り消せる可能性があります。社外宛ては原則取り消し不可と思ってください。

根本解決の手順前述の「遅延送信ルール」の設定が最強の予防策です。加えて本記事のVBAマクロ(外部ドメイン警告)を設定してください。

やってはいけないNG対処「すぐに謝罪メールを送れば大丈夫」という考えは甘いです。謝罪メールを送ることで相手が誤送信に気づく場合もあります。誤送信に気づいた場合はまず相手に電話で確認してから対応を決めてください。

情シス視点のひとこと正直なところ、誤送信の件数が多い職場は「送信前確認の文化」がないだけです。遅延送信の設定を全社展開するだけで件数が激減します。Exchange管理者ならテナントのトランスポートルールで全社一律の遅延送信も設定できます。

困った②「昨日まであったはずのメールが突然消えた」

困った状況「先月のお客様とのやりとりが全部消えています。削除した覚えはないのに!」

なぜこれが起きるか原因は大きく3つあります。①オートアーカイブが有効で別のPSTに自動移動された、②仕分けルールが意図せず削除フォルダに移動していた、③Exchangeの保持ポリシーにより自動削除された——です。Exchangeの場合は管理者の設定する「保持ポリシー」が原因のこともあり、この場合ユーザー側ではどうにもなりません。

その場でできる応急処置

  1. 「削除済みアイテム」フォルダを確認します。
  2. 削除済みアイテムにもない場合、
    フォルダー > 削除済みアイテムを回復する

    から「回復可能なアイテム」フォルダを確認します(Exchange/M365環境のみ)。これは通常のごみ箱とは別の隠しフォルダで、削除済みアイテムから削除したものでも一定期間保存されています。

  3. オートアーカイブが有効かどうかを確認します(
    ファイル > オプション > 詳細設定 > 自動アーカイブの設定

    )。有効なら、アーカイブPSTファイルを開いてみてください。

根本解決の手順オートアーカイブを無効にし、M365のオンラインアーカイブを使う体制に切り替えます。仕分けルールの条件を見直し、意図しない削除ルールがないか確認します。

やってはいけないNG対処「消えたから」と焦ってOSTファイルを削除するのは絶対にNG。削除前のOSTに残っていた未同期データも消えます。

情シス視点のひとことExchange Online環境では「訴訟ホールド(Litigation Hold)」を有効にしておくと、ユーザーが削除したメールも管理者が復元できます。重要なメールを扱う職場では検討する価値があります。これは管理者が設定する機能です。

困った③仕分けルールを20個以上設定したら動かなくなった

困った状況「長年かけて育てたルールが、ある日突然全部動かなくなった。削除もしていないのに。」

なぜこれが起きるかExchange Online環境ではサーバー側ルールの合計サイズが256KBを超えると新しいルールが保存できなくなり、最終的には既存のルールも無効化されます。ルール名・条件・アクションの文字数がすべてカウントされるため、条件を詳細に書いたルールは1つでも数KBを消費します。

根本解決の手順

ホーム > ルール > ルールと通知の管理

を開き、使っていない・古いルールを削除します。ルール名を短縮し、条件のテキストも最小限にします。それでも解決しない場合は、PowerShellでExchange Onlineに接続し、

Get-InboxRule -Mailbox ユーザー名

でサーバー側のルール総サイズを確認する方法もあります(管理者またはITリテラシーが必要)。

やってはいけないNG対処「全部削除してやり直す」前に必ずルールのエクスポートを。

ルールと通知の管理 > オプション > ルールのエクスポート

からバックアップを取ってください。

情シス視点のひとことルールは多ければ多いほど良いわけではありません。私の経験では、10個以下のシンプルなルールで運用しているユーザーの方が、50個のルールを持つユーザーよりはるかにメール処理が速いです。フォルダへの振り分けより「検索フォルダ+タグ付け」のアプローチを検討してください。

困った④Outlookが起動後しばらくしてフリーズする

困った状況「起動はできるんですが、5分くらいするとマウスも動かなくなります。強制終了しかない。」

なぜこれが起きるかこの症状は4つの層で切り分けが必要です。①プロファイル起因(既存記事でカバー済み)、②OSTファイルの肥大化・断片化、③アドイン起因、④データファイル起因です。私の経験では「起動後しばらくしてフリーズ」はOSTの断片化か、特定のアドインがバックグラウンドで大量処理をしていることが原因であることが多いです。

その場でできる応急処置

  1. セーフモード(
    outlook /safe

    )で起動して再現するか確認。再現しなければアドインが原因です。

  2. 再現する場合は
    ファイル > アカウント設定 > データファイル

    でOSTファイルのサイズを確認。10GBを超えていれば肥大化が疑われます。

  3. Windowsのパフォーマンスモニター(タスクマネージャー)でOutlook(OUTLOOK.EXE)のメモリ・CPU使用率を監視し、フリーズ直前に何が急増しているか確認します。

根本解決の手順アドイン起因の場合は原因アドインを特定して無効化します。OSTの肥大化は前述のキャッシュ期間の設定変更で対応。それでも解決しない場合は、OSTファイルを削除してExchangeから再同期させる方法を試します(作業前に管理者に確認の上、時間に余裕のある時間帯に実施してください)。

やってはいけないNG対処フリーズのたびにPCを強制再起動するのは最悪です。強制終了がOSTファイルの破損を加速させ、最終的には起動不能になります。

情シス視点のひとことウイルス対策ソフトがリアルタイムスキャンでOSTファイルを監視しているケースが、フリーズの隠れた原因になっていることがあります。

%LOCALAPPDATA%\Microsoft\Outlook

フォルダをウイルス対策ソフトのスキャン除外リストに追加するだけで劇的に改善した事例を何件も見てきました。

困った⑤会議招集を送ったのに参加者の予定表に反映されない

困った状況「会議招集を送ったのに、Aさんだけ予定表に入っていないと言われる。でもAさんの受信トレイには届いている。」

なぜこれが起きるかExchangeの会議招集は通常のメールとは異なる「iCalendar形式(.ics)」のデータとして処理されます。受信側のOutlookが自動で予定表に追加するのですが、いくつかの条件でこの自動処理が失敗します。最も多い原因は受信側のOutlookのキャッシュモードと予定表の同期タイミングの問題、あるいは受信側のルールが会議招集メールを削除フォルダや別フォルダに移動してしまっているケースです。

根本解決の手順受信側Outlookで

ファイル > オプション > メール > 追跡 の設定を確認します。「会議出席依頼、投票、フォームへの応答を処理する」が有効になっているか確認してください。また受信側の仕分けルールに「会議招集を移動するルール」がないか確認します。Teams連携会議の場合、TeamsアプリとOutlookのアドイン(Microsoft Teams Meeting Add-in)が正常にインストールされているかも確認が必要です。

やってはいけないNG対処「もう一度会議招集を送り直す」だけでは根本解決になりません。同じルールが生きている限り同じ現象が繰り返されます。

VBAで解決できる場合予定表のアイテムを一覧でExcelに出力するマクロを後述していますので、参加者の予定表が正しく更新されているか確認する際に活用してください。

情シス視点のひとこと会議招集の問題は、Teams移行後に急増しています。Teams会議とOutlook予定表の同期は、TeamsアドインのバージョンとOutlookのバージョンが合っていないと挙動が不安定になります。定期的なOfficeアップデートとTeamsアプリのアップデートを怠らないことが一番の予防です。

今すぐ使えるOutlook実務VBAコード集

⚠️ 全VBAコード共通の注意事項
以下のコードを実行する前に、必ず

ファイル > 開く/エクスポート > インポート/エクスポート > Outlookデータファイル(.pst)にエクスポート

からPSTバックアップを取得してください。VBAによる操作はアンドゥできません。特にメールの移動・送信・削除を行うコードは細心の注意を払って実行してください。

⚠️ VBAの「やってはいけない危険地帯」4種

Application.Session.SendAndReceive

をループ内で呼び出すのは絶対に禁止。サーバーへの過剰リクエストでアカウントがロックされる危険があります。

Items.Find

Items.Restrict

を数千件以上のフォルダに使うとOutlookがフリーズします。大量データには

Table

オブジェクトを使ってください。

MailItem.Send

をエラー処理なしで呼び出すと、意図しない送信が完了してしまいます。必ず確認ダイアログとエラーハンドリングをセットで実装してください。
④Exchange環境ではMAPIプロパティの一部が読み取り専用になります。ローカル環境でテストしたコードがExchange環境で動かないケースが必ずあります。本番環境で実行する前に必ずテスト用メールボックスで検証してください。

受信トレイの未読メールをCSVに一括出力するマクロ

' ========================================
' マクロ名未読メール一覧CSV出力
' 用途受信トレイの未読メールの件名・送信者・受信日時をCSVに出力する
' 動作確認済みOutlook 2019(スタンドアロン)/
' Microsoft 365(月次チャネル)/ Exchange Online環境
' 動作するバージョンOutlook 2016以降
' 動作しないバージョンOutlook 2013以前(FileSystemObjectの挙動が異なる場合あり)
' Exchange環境での注意対応(キャッシュモードONの場合、未同期の古いメールは含まれない)
' M365テナントのマクロ設定マクロを有効にする設定が必要
' 実行方法開発タブ > マクロ から実行、またはクイックアクセスツールバーに登録
' セキュリティ注意出力先フォルダのパスは環境に合わせて変更してください
' ========================================

Sub ExportUnreadMailsToCSV()

Dim objFolder As Outlook.MAPIFolder
Dim objTable As Outlook.Table
Dim objRow As Outlook.Row
Dim objFilter As String
Dim strOutputPath As String
Dim intFileNo As Integer
Dim intCount As Integer

On Error GoTo ErrorHandler

' 出力先のCSVファイルパス(環境に合わせて変更してください)
strOutputPath = Environ("USERPROFILE") & "\Desktop\unread_mails_" & _
Format(Now, "yyyymmdd_hhmmss") & ".csv"

' 受信トレイフォルダを取得
Set objFolder = Application.Session.GetDefaultFolder(olFolderInbox)

' 未読メールのフィルターを設定(TableオブジェクトはItems.Findより高速)
objFilter = " = True"

' TableオブジェクトでフィルタリングされたビューをExchange負荷を下げて取得
Set objTable = objFolder.GetTable(objFilter)

' 必要なカラムを追加(デフォルトでは取得されないカラムを追加)
objTable.Columns.Add ("SenderName")
objTable.Columns.Add ("SenderEmailAddress")
objTable.Columns.Add ("ReceivedTime")
objTable.Columns.Add ("Subject")
objTable.Columns.Add ("Importance")

' CSVファイルに書き込み開始
intFileNo = FreeFile()
Open strOutputPath For Output As #intFileNo

' CSVヘッダー行をBOM付きUTF-8で出力(Excelで開けるよう)
' 注VBAのOpen文はShift-JISが基本のため、BOMなしでも
' 日本語環境のExcelでは読める場合が多い
Print #intFileNo, "受信日時,送信者名,送信者メールアドレス,件名,重要度"

intCount = 0

' テーブルの行を順次処理
Do While Not objTable.EndOfTable
Set objRow = objTable.GetNextRow()

' 重要度の数値を文字列に変換
Dim strImportance As String
Select Case objRow("Importance")
Case 2: strImportance = "高"
Case 1: strImportance = "標準"
Case 0: strImportance = "低"
Case Else: strImportance = "不明"
End Select

' CSV形式で出力(カンマを含む文字列はダブルクォートで囲む)
Print #intFileNo, """" & objRow("ReceivedTime") & """" & "," & _
"""" & objRow("SenderName") & """" & "," & _
"""" & objRow("SenderEmailAddress") & """" & "," & _
"""" & Replace(objRow("Subject"), """", """""") & """" & "," & _
strImportance
intCount = intCount + 1
Loop

' ファイルを閉じる
Close #intFileNo

MsgBox "未読メール " & intCount & " 件をCSVに出力しました。" & vbCrLf & _
"保存先" & strOutputPath, vbInformation, "出力完了"

' Excelでファイルを開く(任意)
' Shell "cmd /c start " & strOutputPath, vbHide

Exit Sub

ErrorHandler:
Close #intFileNo
MsgBox "エラーが発生しました。" & vbCrLf & _
"エラー番号" & Err.Number & vbCrLf & _
"エラー内容" & Err.Description, vbCritical, "エラー"
End Sub

予定表の今月の予定をExcelに出力するマクロ

' ========================================
' マクロ名予定表今月分Excel出力
' 用途今月の予定(件名・開始日時・終了日時・場所・参加者)をExcelファイルに出力する
' 動作確認済みOutlook 2019(スタンドアロン)/
' Microsoft 365(月次チャネル)/ Exchange Online環境
' 動作するバージョンOutlook 2016以降(Excel 2016以降が必要)
' 動作しないバージョンOutlookのみでは動作しない。Excel VBAとして実行する場合は別途調整が必要
' Exchange環境での注意対応(共有予定表は別途フォルダ指定が必要)
' M365テナントのマクロ設定マクロを有効にする設定が必要(OutlookとExcelの両方)
' 実行方法Outlook VBAエディタ(開発タブ > Visual Basic)から実行
' セキュリティ注意Excelの自動起動を伴うため、セキュリティソフトが反応する場合あり
' ========================================

Sub ExportCalendarToExcel()

Dim objCalendar As Outlook.MAPIFolder
Dim objItems As Outlook.Items
Dim objItem As Object
Dim dtStart As Date
Dim dtEnd As Date
Dim strFilter As String

' Excel操作用変数
Dim objExcel As Object
Dim objWorkbook As Object
Dim objSheet As Object
Dim intRow As Integer
Dim intCount As Integer

On Error GoTo ErrorHandler

' 今月の初日と末日を計算
dtStart = DateSerial(Year(Now), Month(Now), 1)
dtEnd = DateSerial(Year(Now), Month(Now) + 1, 0)

' 予定表フォルダを取得
Set objCalendar = Application.Session.GetDefaultFolder(olFolderCalendar)

' 予定表アイテムを取得し、日付でソート
Set objItems = objCalendar.Items
objItems.IncludeRecurrences = True ' 繰り返し予定を展開する
objItems.Sort "" ' 開始日時でソート

' 日付フィルターを設定
' 注Tableオブジェクトはカレンダーの繰り返しに対応していないため
' Itemsオブジェクトを使用しています
strFilter = " >= '" & Format(dtStart, "yyyy/mm/dd") & _
"' And <= '" & Format(dtEnd, "yyyy/mm/dd 23:59") & "'"
Set objItems = objItems.Restrict(strFilter)

' Excelを起動
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add
Set objSheet = objWorkbook.Sheets(1)

' シート名を設定
objSheet.Name = Format(Now, "yyyy年mm月") & "予定表"

' ヘッダー行を出力
intRow = 1
With objSheet
.Cells(intRow, 1).Value = "件名"
.Cells(intRow, 2).Value = "開始日時"
.Cells(intRow, 3).Value = "終了日時"
.Cells(intRow, 4).Value = "場所"
.Cells(intRow, 5).Value = "開催者"
.Cells(intRow, 6).Value = "繰り返し"
.Cells(intRow, 7).Value = "重要度"
' ヘッダーを太字に
.Rows(1).Font.Bold = True
End With

intRow = 2
intCount = 0

' 各予定アイテムを処理
For Each objItem In objItems
' 予定アイテムのみ処理(タスク等は除外)
If objItem.Class = olAppointment Then
With objSheet
.Cells(intRow, 1).Value = objItem.Subject
.Cells(intRow, 2).Value = objItem.Start
.Cells(intRow, 3).Value = objItem.End
.Cells(intRow, 4).Value = objItem.Location
.Cells(intRow, 5).Value = objItem.Organizer
.Cells(intRow, 6).Value = IIf(objItem.IsRecurring, "繰り返し", "単発")

' 重要度の変換
Select Case objItem.Importance
Case olImportanceHigh: .Cells(intRow, 7).Value = "高"
Case olImportanceNormal: .Cells(intRow, 7).Value = "標準"
Case olImportanceLow: .Cells(intRow, 7).Value = "低"
End Select

' 日時フォーマットを設定
.Cells(intRow, 2).NumberFormat = "yyyy/mm/dd hh:mm"
.Cells(intRow, 3).NumberFormat = "yyyy/mm/dd hh:mm"
End With

intRow = intRow + 1
intCount = intCount + 1
End If
Next objItem

' 列幅を自動調整
objSheet.Columns("A:G").AutoFit

MsgBox Format(Now, "yyyy年mm月") & "の予定 " & intCount & " 件をExcelに出力しました。", _
vbInformation, "出力完了"

Exit Sub

ErrorHandler:
If Not objWorkbook Is Nothing Then
objWorkbook.Close SaveChanges:=False
objExcel.Quit
End If
MsgBox "エラーが発生しました。" & vbCrLf & _
"エラー番号" & Err.Number & vbCrLf & _
"エラー内容" & Err.Description & vbCrLf & vbCrLf & _
"Excelが起動中の場合は手動で閉じてください。", vbCritical, "エラー"
End Sub

件名が空白・添付忘れを送信前に検出する複合チェックマクロ

' ========================================
' マクロ名送信前複合チェック(件名・添付・宛先確認)
' 用途メール送信前に件名空白・添付忘れ・宛先未入力を自動検出して警告する
' 動作確認済みOutlook 2019(スタンドアロン)/
' Microsoft 365(月次チャネル)/ Exchange Online環境
' 動作するバージョンOutlook 2016以降
' 動作しないバージョンOutlook 2013以前(ItemSendイベントの安定性に問題あり)
' Exchange環境での注意対応(外部ドメイン検出はSMTPアドレス変換が必要な場合あり)
' M365テナントのマクロ設定マクロを有効にする設定が必要
' 実行方法ThisOutlookSessionモジュールに記述。Outlookを再起動すると自動有効化
' セキュリティ注意既存のApplication_ItemSendプロシージャと競合しないよう注意。
' 複数のItemSendコードを使う場合は1つのプロシージャ内に統合してください。
' ========================================

' ※このコードはThisOutlookSessionモジュールに記述してください
' ※前述の外部ドメイン警告マクロと統合する場合は、このコードのみに集約してください

' 社内ドメイン設定(自社のドメインを追加してください)
Const MY_DOMAINS As String = "@example.co.jp,@example.com"

' 添付忘れを示す本文キーワード(スペース区切りで追加可能)
Const ATTACH_KEYWORDS As String = "添付 別添 ご確認ください 資料 ファイル"

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

' メールアイテム以外はスキップ
If Item.Class <> olMail Then Exit Sub

Dim strWarnings As String
Dim blnCancel As Boolean
strWarnings = ""
blnCancel = False

On Error GoTo ErrorHandler

' - チェック1件名が空かどうか -
If Trim(Item.Subject) = "" Then
strWarnings = strWarnings & "⚠️ 件名が入力されていません!" & vbCrLf
End If

' - チェック2宛先が設定されているか -
If Item.To = "" And Item.CC = "" Then
strWarnings = strWarnings & "⚠️ 宛先(To/CC)が設定されていません!" & vbCrLf
End If

' - チェック3添付キーワードがあるのに添付がない場合 -
If Item.Attachments.Count = 0 Then
Dim arrKeywords() As String
Dim strBody As String
Dim i As Integer

' 本文をプレーンテキストで取得(HTMLメールも考慮)
strBody = Item.Body
arrKeywords = Split(ATTACH_KEYWORDS, " ")

For i = 0 To UBound(arrKeywords)
If InStr(strBody, Trim(arrKeywords(i))) > 0 Then
strWarnings = strWarnings & "⚠️ 本文に「" & Trim(arrKeywords(i)) & _
"」という言葉がありますが、添付ファイルがありません!" & vbCrLf
Exit For ' 1回の警告で十分
End If
Next i
End If

' - チェック4社外ドメインが含まれているか -
Dim objRecipients As Outlook.Recipients
Dim objRecipient As Outlook.Recipient
Dim strAddress As String
Dim arrDomains() As String
Dim blnInternal As Boolean
Dim blnExternalFound As Boolean
Dim strExternalAddresses As String

arrDomains = Split(MY_DOMAINS, ",")
blnExternalFound = False
strExternalAddresses = ""

Set objRecipients = Item.Recipients

For Each objRecipient In objRecipients
objRecipient.Resolve
strAddress = objRecipient.Address

' Exchange環境のX500アドレスをSMTPアドレスに変換
If InStr(strAddress, "@") = 0 Then
On Error Resume Next
strAddress = objRecipient.PropertyAccessor.GetProperty( _
"http://schemas.microsoft.com/mapi/proptag/0x39FE001E")
On Error GoTo ErrorHandler
End If

blnInternal = False
Dim j As Integer
For j = 0 To UBound(arrDomains)
If InStr(LCase(strAddress), LCase(Trim(arrDomains(j)))) > 0 Then
blnInternal = True
Exit For
End If
Next j

If Not blnInternal Then
blnExternalFound = True
strExternalAddresses = strExternalAddresses & " ・" & strAddress & vbCrLf
End If
Next objRecipient

' - 警告ダイアログの表示 -
Dim strMessage As String

If strWarnings <> "" Or blnExternalFound Then
strMessage = "【送信前チェック結果】" & vbCrLf & vbCrLf

If strWarnings <> "" Then
strMessage = strMessage & strWarnings & vbCrLf
End If

If blnExternalFound Then
strMessage = strMessage & "\u\U0001f4e7 社外ドメイン宛てアドレス" & vbCrLf
strMessage = strMessage & strExternalAddresses & vbCrLf
End If

strMessage = strMessage & "件名「" & Item.Subject & "」" & vbCrLf

If Item.Attachments.Count > 0 Then
strMessage = strMessage & "添付ファイル数" & Item.Attachments.Count & " 件" & vbCrLf
End If

strMessage = strMessage & vbCrLf & "このまま送信しますか?(「いいえ」でキャンセルして確認できます)"

Dim intResponse As Integer
intResponse = MsgBox(strMessage, vbYesNo + vbExclamation + vbDefaultButton2, "送信前確認")

If intResponse = vbNo Then
Cancel = True
End If
End If

Exit Sub

ErrorHandler:
' エラー発生時も安全確認
Dim intErrResponse As Integer
intErrResponse = MsgBox("送信前チェック中にエラーが発生しました。" & vbCrLf & _
"件名" & Item.Subject & vbCrLf & vbCrLf & _
"このまま送信しますか?", vbYesNo + vbExclamation, "送信確認(エラー)")
If intErrResponse = vbNo Then Cancel = True
End Sub

ぶっちゃけこうした方がいい!

15年間、Outlookのトラブル対応・設定・移行を現場でやり続けてきて、最終的に確信していることをぶっちゃけ話します。

まず一番大事なことを言うと、Outlookはデフォルト設定のまま使うことを想定して設計されていません。Gmailは開けばそのまま使えるように設計されているし、Google Workspaceはクラウドネイティブでデータの場所を意識しなくていい。でもOutlookは違います。MAPIプロトコル、プロファイル、OSTキャッシュ、アドイン、Exchangeとの連携——これらが複雑に絡み合うアーキテクチャを持つ「業務用の本格ツール」です。だから、設定を自分でカスタマイズしなければ、折り合いの悪いデフォルト設定のまま何年も使い続けることになります。

私が現場で何百人もサポートしてきた経験から言うと、Outlookのトラブルの7割は「プロファイルの老朽化」「OSTの肥大化」「不要アドインの蓄積」の3つのどれかです。そしてこの3つは、年に一度のメンテナンス——新しいプロファイルへの移行、OSTキャッシュ期間の見直し、アドインの棚卸し——で大半が防げます。パソコンの大掃除と同じ感覚で、年末や年度末に「Outlookの健康診断」をする習慣をつけてほしいんですよね。

誤送信については、「気をつけます」は対策じゃないとはっきり言いたいです。私が見てきた誤送信インシデントの中で、「気をつけていなかった」人は一人もいませんでした。みんな「気をつけていた」のに起きています。だから設定で止める仕組みを作るしかない。VBAの外部ドメイン警告マクロと遅延送信の設定、これを今日設定しておくだけで、将来の自分を救える可能性があります。5分で設定できます。本当に今すぐやってください。

あと、M365に移行した組織によく言うんですが、「今まで通り使える」という思い込みを捨てることが一番大事です。オンプレExchangeで当たり前だった機能が、M365では管理者権限が必要になっていたり、そもそもポリシーでブロックされていたりします。移行後の混乱の9割は「なんで今まで通りできないんだ」という期待値のズレから来ています。M365は制約が増える代わりに、セキュリティと利便性のバランスが取れた新しい使い方があります。OSTキャッシュからオンラインアーカイブへの切り替え、PSTから卒業してすべてサーバー管理へ——これが現代的なOutlookの使い方です。

最後に一つだけ。Outlookが壊れる前にバックアップを取る習慣、これだけは絶対に身につけてください。「壊れてから気づく」では遅いです。特にPOPアカウントでローカルにメールを蓄積している方は、今すぐPSTファイルのバックアップをしてください。私が見てきたデータ消失インシデントで「バックアップがあって助かった」人は全員笑顔で帰りましたが、「バックアップがなかった」人は二度とそのメールを取り戻せませんでした。Outlookはパワフルなツールですが、守ってくれるのは結局、使う人自身の習慣です。

Outlookのプロファイル修復に関する疑問を解決!

新しいプロファイルを作ると、過去のメールや予定は本当に消えないの?

Microsoft365やIMAP形式のアカウントであれば、メールデータはサーバーに保存されているため消えません。新しいプロファイルを作成するとOutlookがサーバーに接続し直し、メール・予定表・連絡先がすべて再同期されます。ただし、POPアカウントでローカルに保存していた過去のメール(.pstファイルの中身)については、新しいプロファイルには自動的には引き継がれません。この場合は、Outlookのインポート機能(「ファイル」→「開く/エクスポート」→「インポート/エクスポート」)を使って古い.pstファイルを読み込む必要があります。

ScanPSTを実行したのにフォルダや中身がなくなってしまった。どうすれば?

ScanPSTを実行すると、修復できなかったアイテムが「Lost and Found」フォルダにまとめられます。そこに残っていないか確認してみてください。また、ScanPSTは修復前にバックアップファイル(.bak)を同じフォルダに自動作成します。このファイルの拡張子を

.bak.pst

に変更すると、Outlookから開いてインポートすることが可能です。これで回収できなかった場合は、深刻な破損が発生している可能性があるため、サードパーティ製の専門ツールの利用を検討してください。

「修復」ボタンがグレーアウトしていてクリックできない。なぜ?

これはアカウントの種類によって起こります。Outlook 2016でExchangeサーバーに接続しているアカウントの場合、仕様として「修復」ボタンが表示されません。また、Microsoft365のアカウントでも同様の場合があります。このケースでは修復機能を使うのではなく、ステップ3で解説した「新しいプロファイルの作成」に直接進むのが正しい対処法です。

同じトラブルが何度も繰り返されるのはなぜ?

もし短期間に何度もプロファイルが壊れるようであれば、ソフトウェアだけの問題ではなく、ストレージ(HDDやSSD)自体の劣化が原因かもしれません。特に数年以上使い続けているHDDは、セクタ不良が蓄積してデータファイルを傷つけることがあります。Windowsに標準搭載されているツールや、「CrystalDiskInfo」などのフリーウェアでストレージの健康状態(S.M.A.R.T情報)を確認してみることをおすすめします。また、ウイルス対策ソフトがOutlookのデータファイルに干渉してプロファイルを壊すケースも報告されています。ウイルス対策ソフトの設定で、Outlookのデータフォルダをスキャン対象から除外することも検討してみてください。

今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?

LINE公式

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

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

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

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

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

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

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

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

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

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

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

相談しに行く

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

まとめ

Outlookのプロファイル破損は、誰にでも起こり得る身近なトラブルです。しかし、正しい手順で対処すれば、データを失うことなく確実に解決できます。

今回の内容を振り返ると、まずセーフモードで起動確認してアドインが原因かどうかを切り分け、次にアカウント設定の「修復」機能を試み、それでもダメなら新しいプロファイルの作成が最も確実で安全な方法です。POPアカウントやローカル保存の.pstファイルが絡む場合は、ScanPSTによるデータファイルの修復も有効な手段です。そして2026年1月のように、Windowsアップデート自体がトラブルの原因になることもあるので、問題が発生したらまずMicrosoftの公式サポートページで既知の問題がないかチェックする習慣も大切です。

どの方法を試すにも、作業前のバックアップが絶対条件です。この記事の手順を参考に、落ち着いて一つずつ試してみてください。きっとあなたのOutlookは復活します。

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

企業の情報システム部門で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をコピーしました