返信、転送時の本文に含まれるヘッダーのメールアドレスを削除する方法

コメントにて以下のご要望をいただきました。


お世話になります。

サーバー更新により、受信したメールから返信・転送メールを作成する際に、
  本文中の宛先、CCの名前の後ろにアドレスが表示されるようになってしまいました。
この症状は、受信メールの閲覧のみでは発生せず、返信メール作成すると発生します。

以前         現在
  「宛先:田島太郎」→「宛先:田島太郎 (メールアドレス)」

アドレスを削除するためのマクロはなんとか作成できましたが、
  削除のタイミングが思い通りになりません。

特定文字列の削除のタイミングは
「転送(Ctrl+R)」「返信(Ctr+Shift+R)」「全員へ返信(Ctrl+F)」
ボタン押下または右クリックにより、返信等メール本文が
表示される同時にマクロが動くのが希望です。
  (返信メール本文が表示された際には、既に削除されている)

最初、受信メールを開いた際にマクロが動くようにしたのですが、
  閲覧だけだと、特定文字列の削除の必要はないのに、
  変更版を保存しますかと聞かれるので、上記のタイミングで
削除するようにトライしているのですが、うまくいきません。

また、送信時に件名に文字を入れたりするため、
  送信ボタンのあるフォームを作成しているので、
  送信ボタンに組み込んだら、うまく動いたのですが、
  作成者が目視でアドレスが削除されたことを確認したいとの
要望があり、上記希望のタイミングでの動作について
四苦八苦しているところです。

助言よろしくお願いいたします


返信や転送の際の本文に含まれるヘッダーの表示名の横にメールアドレスが表示されるのは、Outlook 2013 の 15.0.4737.1000 以降の新機能です。
この動作を以前のものに戻したい場合は、以下のレジストリ設定を行います。

キー: HKEY_CURRENT_USER\Software\Microsoft\Office\<ver>\Outlook\Options
名前: DisableEmailAddressesInReplyHeaders
種類: REG_DWORD
値: 1

なお、<ver> は Outlook 2013 なら 15.0、Outlook 2016 以降なら 16.0 になります。

参考リンク: Outlook 2013 でメール ヘッダーが、受信者がその電子メール アドレスではなくの表示名にのみが表示されます。

広告

Outlook 2010 以降で Word から差し込み印刷によりメールを送信する際に表示される警告ダイアログを表示させないようにする方法

Word から差し込み印刷によりメールを送信する際に表示される警告ダイアログを表示させないようにする方法のコメントにて以下のご質問をいただきました。


いつも参考させていただき、大変助かっております。ありがとうございます。
Outlook 2013(windows7)を使用しているのですが、同じ操作をしても大丈夫でしょうか?

Word2010、Outlook2010を使っていて、書式なしで送信しているのですが、アドバイスの通りの対処をしても相変わらず警告が出ます。何かお知恵はありますか。


リンク先の記事では Outlook 2007 に関してのみ記載していましたが、Outlook 2010 以降でも同様のセキュリティ強化が行われており、レジストリ設定をしなければダイアログが表示されます。
回避策はレジストリ設定となるのですが、Outlook のバージョンにより設定すべきキーが異なります。
手順は以下の通りとなります。

  1. スタート メニューの [ファイル名を指定して実行] で “Regedit.exe” と入力し、[OK] をクリックします。
  2. 以下のレジストリ キーを左ペインで探し、クリックします。なければキーを作成します。
    • Outlook 2010 の場合
      HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\14.0\Outlook\Security
    • Outlook 2013 の場合
      HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\15.0\Outlook\Security
    • Outlook 2016/2019 の場合
      HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\16.0\Outlook\Security
  3. [編集]-[新規]-[DWORD 値] をクリックします。
  4. 名前に “PromptSimpleMAPINameResolve” と入力します。
  5. [PromptSimpleMAPINameResolve] を右クリックし、[修正] をクリックします。
  6. [値のデータ] に 2 と入力して [OK] をクリックします。(元に戻すには 1 を入力します。)
  7. [編集]-[新規]-[DWORD 値] をクリックします。
  8. 名前に “PromptSimpleMAPISend” と入力します。
  9. [PromptSimpleMAPISend] を右クリックし、[修正] をクリックします。
  10. [値のデータ] に 2 と入力して [OK] をクリックします。(元に戻すには 1 を入力します。)
  11. レジストリ エディタを終了します。

Outlook で画面の表示が乱れる現象が発生する場合の対処方法

 

Outlook を長時間 (環境によっては数時間) 使用し続けると、以下のような現象が発生する場合があります。

  • リボンなどのボタンの表示がされなくなる
  • メールの本文が空白になったり、黒く表示される
  • ナビゲーション ウィンドウのフォルダーが表示されなくなる
  • UI が四角だけで表示される

多くの場合、この現象は画面描画のためのメモリ確保が行えずに発生します。
この記事では、メモリ不足による画面描画を解消するためのいくつかの方法をご紹介します。

OST や PST から不要なアイテムを削除、移動し、使用していない PST をプロファイルから削除する

多くの場合、Outlook では OST や PST というメールを保存するためのファイルを開いています。
これらのファイルは Outlook の起動中には常に開かれた状態となっており、メールの読み書きに伴ってランダムにアクセスされます。
環境によっては一つの OST/PST のサイズが数ギガとなり、さらには複数の PST を同時に開くというようなこともあるでしょう。
そして、現在開いているフォルダーやメールのデータだけでなく、バックグラウンドで処理される動作などによりファイルのデータがメモリ上にキャッシュされ、メモリが大量に使用される動作となります。

したがって、メモリの使用量を抑えるには、普段使用している OST や PST のアイテムの量を減らし、使用していない PST はプロファイルから削除してしまうというものが考えられます。
パフォーマンス上の指標とはなりますが、以下のマイクロソフト技術情報では一つのフォルダーには 10 万アイテム、一つの PST には 500 フォルダーまでが正常な動作範囲というものがあります。

2768656 Outlook performance issues when there are too many items or folders in a Cached mode .ost or .pst file folder

一つのプロファイルあたりどのくらい PST を使えるのかという情報がちょっと見当たらないのですが、結局のところ PST の数というより、すべての PST のサイズを合計してどの程度になるのかという観点で考えたほうが良いかもしれません。

ハードウェア グラフィック アクセラレータを有効にする

Office 2013 以降の Office 製品では、DirectX によるハードウエア グラフィック アクセラレータを使用して画面描画が行われています。
これにより高速な画面描画ができるようになったのですが、一部のアクセラレータで正常な動作が行われない場合があり、[ハードウェア グラフィック アクセラレータを無効にする] をオンにしてアクセラレータを無効にするという方法が問題の対処として実施されている場合があります。
しかし、アクセラレータを無効にすると、画面描画をソフトウェアで実行するため、メモリの使用量が若干増えるようです。

Office 2013 のリリースから 4 年経過し、Office 自体やビデオドライバーの改善により問題が解消されている可能性もありますので、以前何らかの理由で [ハードウェア グラフィック アクセラレータを無効にする] をオンにしていた場合、最新の Office の修正プログラムやグラフィック カードのデバイス ドライバーを適用してアクセラレータを有効にすることで、メモリ消費を抑え、かつ高速に画面描画ができるようになるかもしれません。

高解像度のディスプレイでは DPI を 200% 以上に設定する

最近では高解像度のディスプレイを持つノート PC が普及していますが、このような環境では画面上に表示される情報量が増え、それに伴ってメモリの消費量が増える結果となります。
一例では、1600 x 1200 ピクセルのディスプレイで全画面表示した場合のメモリ消費量が 8 メガバイトあるのに対し、3840 x 2160 ピクセルのディスプレイで全画面表示した場合には 4 倍の 32 メガバイトになったというものがあります。
そのため、高解像度のディスプレイでは DPI を 200% 以上とし、画面に表示される情報量を減らすことでメモリの消費量を抑えることができます。
なお、同様の理由でマルチモニターでの使用や、ウィンドウを多数開くような使用もメモリ消費を増やす原因となりますので、このような使用方法も避けたほうがよいでしょう。

タッチでメッセージのスクロールを行わないようにする

最近のノート PC ではタッチスクリーンが当たり前のようになり、メッセージのスクロールもタッチ操作で行うことができます。
しかし、タッチ操作でスクロールを行うと、メモリの消費が多いという情報があります。
そのため、スクロールはマウスやキーボードで行ったほうが良いようです。

不要なアドインを無効化または削除する

プレインストールで Office がインストールされているような場合、同時にサードパーティ製の Outlook のアドインがインストールされていることがあります。
これらの中には便利なものもあるのですが、最初からインストールされているだけで使ったこともないというようなものもあるでしょう。
不要なアドインを無効化または削除すれば、Outlook のメモリ使用量も抑えることができ、アドインに起因するパフォーマンスの問題なども改善されるかもしれません。

なお、マイクロソフトの Outlook のアドインには以下のようなものがありますが、使用していなければこれらも無効化してかまわないでしょう。

  • Microsoft Exchange Add-in (サーバーが Microsoft Exchange や Outlook.com でなければ不要)
  • Skype Meeting Add-in for Microsoft Office 201X (Skype for Business を使用していなければ不要
  • Microsoft IME Outlook アドイン (連絡先アイテムの姓名フリガナを IME に自動登録しないなら不要)
  • Microsoft SharePoint Server Colleague Import Add-in (SharePoint の連絡先などと同期していないなら不要)
  • OneNote Notes about Outlook Items (メールを OneNote にコピーするような操作を日常的に行っていないなら不要)
  • Microsoft VBA for Outlook AddIn (Outlook のマクロを使用していないなら不要)
  • Outlook Social Connector 2016 (メールの下部に表示される人物情報ウィンドウを使っていないなら不要)

Office 2016/2013 を最新の状態に更新する

Office の共通コンポーネントや Outlook がメールの表示に使用する Word の修正には画面描画やメモリの使用に関する改善が含まれている場合があります。
したがって、Outlook だけでなく、Word や Office の最新の修正プログラムを適用することが現象改善につながるといえます。

さらに、Windows が 64 ビット版で、32 ビットの Outlook 2016 のクリック実行版を使用している場合のみの話ですが、更新チャネルを月次チャネルとして最新の状態 (Version 1709 以降) に更新すると、Outlook 2016 が使用できるメモリの量が 2 ギガバイトから 4 ギガバイトに倍増します。
これは、Windows の Large Address Aware という機能に Outlook 2016 が対応したためです。
通常、Office 2016 をインストールすると、Windows が 64 ビット版であっても、Office アプリケーションは 32 ビット版がインストールされます。
この場合、PC に 2 ギガバイトよりも多いメモリが搭載されていたとしても、32 ビット版のアプリケーションが使用できるメモリの量は最大で 2 ギガバイトに制限されます。
これは、32 ビットの環境では Windows が使用するメモリとして 2 ギガバイトが予約されていることに起因します。
しかし、Windows が 64 ビット版である場合、32 ビット環境で予約されていたメモリ空間をユーザー アプリケーションに開放する Large Address Aware というオプションがあり、Version 1709 以降の Outlook 2016 ではこれが有効となっているので 4 ギガバイトまで使用できるようになったのです。

なお、最新の状態にしても、[ファイル]-[Office アカウント] の 右側の Office ロゴの下のバージョンが 1709 以上にならない場合は、以下のマイクロソフト技術情報の [Download] をクリックして修正プログラムを実行し、更新チャネルを月次チャネルとしてください。

延期チャネルから Office 365 製品ファミリ用の現在のチャネルに切り替える方法

Office 2016 を 64 ビット版に入れ替える

前述の通り、通常は Windows が 64 ビット版であっても Office は 32 ビット版がインストールされます。
これは、アドインやマクロなどが 64 ビットに対応していない状況を考慮したものと思われます。
しかし、マクロやアドインに問題がなければ 64 ビット版にすることで、PC の搭載メモリを十分に活用した処理ができるようになります。
なお、Outlook だけを 64 ビットにするということはできないため、Office 全体をアンインストールし、64 ビット版を再インストールする必要があります。

 

参考情報:

Office 365 ProPlus 更新プログラム チャネルの概要
32-bit Outlook interface elements unexpectedly render in black, white, or blank
Large Address Aware in Outlook 2016

IMAP では色分類項目が使えない

コメントにて以下のご要望をいただきました。


助けてほしいです。
小さい転職先の会社でOutlook 2013をIMAPで使っているのですが、色分類項目が使えません。POPに変えると他の端末(IPHONE)からメールが見れないくなると聞きました。この分類項目を是非使いたのですが、方法はあるのでしょうか?
宜しく、お願い致します。


IMAP フォルダーのメールは、サーバー上のものと同期しており、ローカルで変更を加えた場合はサーバー上のメールも更新する必要があります。
一方、色分類項目は Outlook 独自の機能であり、IMAP サーバー上に同期することはできないため、IMAP フォルダー上では使用できません。
したがって、色分類項目を使いたい場合は、PST ファイルを追加し、メールを PST に移動する必要がありますが、そうするとほかの端末から見えなくなるということになります。

もし、IMAP サーバー上でフォルダーの振り分けをしていないのであれば、POP に切り替えたほうが良いでしょう。
POP を使っている場合でも、サーバーにメールを残すという設定をすれば、他の端末からでもメールが読めるようになります。
ただし、IMAP とは異なり、未読・既読の状態は端末ごとに保持され、他の端末で既読にしたメールでも、その端末で読んでいないメールは未読となります。

色分類項目を使いつつ、他の端末でも未読・既読状態やフォルダーの階層情報を維持したいということになると、Exchange サーバーを使用するしか方法はないといえます。

HTML メールでの OLE パッケージ オブジェクトを制限する方法

015 年の 12 月に Outlook でメッセージをプレビューしただけで悪意のあるコードを実行されてしまうという Word の脆弱性に対応するセキュリティ修正プログラムがリリースされましたが、それに関連して以下のブログの脆弱性が話題になっているようです。

OLEOutlook – bypass almost every Corporate security control with a point’n’click GUI

このブログで記載されている脆弱性というのは、以下のような手順でメールを送信することにより、exe ファイルを意図せず実行させられるというものです。

  1. HTML 形式のメールを作成し、[挿入]-[オブジェクト] でパッケージとして exe ファイルを埋め込みます。
      (このとき、アイコンや名前を変更し、通常のファイルのように偽装できます。)
  2. 作成したメールを送信前の状態で下書きや msg ファイルとして保存し、別のメールに添付して送信します。
  3. 受信側で添付された下書きメールに表示されているオブジェクトをダブルクリックすると、埋め込んだ exe ファイルが実行できてしまいます。

この問題に対する対処方法としては、mso を危険な添付ファイルの拡張子としてブロックする設定を行うというものがあります。
Outlook での拡張子による添付ファイルのブロック方法はいくつかありますが、ユーザー権限でできる方法は以下のレジストリ設定となります。

  キー: HKEY_CURRENT_USER\Software\Microsoft\Office\<Ver>\Outlook\Security
  名前: Level1Add
  種類: REG_SZ
  値: .mso

※  <ver> は Outlook のバージョン (2007 = 12.0、2010 = 14.0、2013 = 15.0、2016 = 16.0)

上記以外の設定方法については Outlook 2013 で添付ファイル設定を計画する をご覧ください。

HTML メールで OLE オブジェクトを埋め込んだ場合は拡張子が .mso となるので、上記の設定により OLE パッケージ オブジェクトが埋め込まれたとしても実行ができなくなります。
ただし、この設定を行うと、パッケージ オブジェクトだけでなく、Excel ワークシートや PowerPoint スライドなど他の OLE オブジェクトも実行できなくなります。
そのため、Excel ワークシートを埋め込んで返信時にフォームのように入力させたり、AllowInplaceOleActivation レジストリの設定により受信時の OLE オブジェクト実行を可能としているような場合には注意が必要です。

なお、上記のブログでは回避策として ShowOLEPackageObj というレジストリ設定を 0 にするというものが紹介されていますが、これは回避策とはなりません。
何故なら、ShowOLEPackageObj が有効なのはリッチテキスト形式で本文に OLE パッケージ オブジェクトが埋め込まれている場合であり、HTML 形式のメールには作用しないためです。

また、ShowOLEPackageObj は既定で 0 (= 表示しない) となっているため、通常はリッチテキスト形式で上記の手順を実行しても OLE パッケージ オブジェクトは表示すらされません。
意図的に ShowOLEPackageObj を 1 と設定している場合に限り、既定の 0 に戻すことで上記のような手順による攻撃を防ぐことができるようになります。

メッセージ形式により OLE オブジェクトの動作や設定が変わり、ちょっとわかりにくいかと思いましたので、整理してみました。

HTML 形式の場合

  • 既定の動作
    • 受信メール: OLE オブジェクトは画像として表示され、実行はできない
    • 送信前のメール: OLE オブジェクトの実行ができる
  • Level1Add などにより .mso を制限する拡張子として追加
    • 受信メール・送信前のメールとも、OLE オブジェクトは画像として表示され、実行できなくなる
  • ShowOLEPackageObj を設定
    • HTML 形式では無効

リッチテキスト形式の場合

  • 既定の動作
    • OLE パッケージ オブジェクトは表示されない
    • 受信メール: パッケージ以外のオブジェクトは画像として表示され、実行はできない
    • 送信前のメール: パッケージ以外のオブジェクトの実行ができる
  • ShowOLEPackageObj を 1 とした場合の動作
    • 受信メール: パッケージを含む OLE オブジェクトは画像として表示され、実行はできない
    • 送信前のメール: パッケージを含む OLE オブジェクトの実行ができる
  • Level1Add などにより .mso を制限する拡張子として追加
    • リッチテキスト形式では無効

特定のフォルダー以下のサブフォルダーの未読メールをまとめて管理する方法

コメントにて以下のご要望をいただきました。


Outlook2010で、部署名フォルダの下に各社員のフォルダをつくる等、階層構造を使って管理しております。
その際、下記の2つを実行できたらと考えているのですが、そのようなスクリプトは作成可能でしょうか。

1) サブフォルダ以下の未読数を表示する機能。
部署名フォルダにサブフォルダ(各社員)の未読数の合計を表示。

2) フォルダ及びサブフォルダの未読を一括して既読にする機能。
部署名フォルダを選択した際に、部署フォルダ及びサブフォルダ(各社員)の未読を一括して既読にできる機能。

もし方法がありましたら、教えていただければ大変助かります。


このようなご要望であれば、検索フォルダーでも実現可能でしょう。
既定の「未読メール」検索フォルダーはメールボックスのすべての未読メールが表示されますが、カスタマイズした検索フォルダーを作ることで特定のフォルダーの下のサブフォルダーすべての未読メールだけを検索することが可能です。
そのような検索フォルダーを作成する手順は以下の通りです。

  1. フォルダー ツリー上の [検索フォルダー] を右クリックし、[新しい検索フォルダー] をクリックします。
  2. [検索フォルダーを選択してください] の下のボックスをスクロールし、一番下の [カスタム検索フォルダーを作成する] を選択します。
  3. [選択] ボタンをクリックします。
  4. [名前] に適切な名前 (xx フォルダーの未読 など) を入力します。
  5. [条件] をクリックし、[詳細設定] タブで [開封状況] をオンにし、右のドロップダウンで [未読] を選択して [OK] をクリックします。
  6. [参照] をクリックします。
  7. 既定ではメールボックスのルート フォルダーのチェックボックスがオンになっているので、これをオフにします。
  8. 部署名のフォルダーのチェックボックスをオンにし、ダイアログ下部の [サブフォルダーも検索する] をオンにして [OK] をクリックします。
  9. [OK] をクリックします。

このようにして作成した検索フォルダーには指定されたフォルダー以下のすべてのサブフォルダーの未読メールがリストアップされ、検索フォルダーの右の数字はすべてのサブフォルダーの未読メールの合計数となります。
また、検索フォルダーを右クリックし、[すべて開封済みにする] をクリックすれば、サブフォルダーのすべての未読メールを既読にすることもできます。

共有メールボックス全体を検索する方法

コメントにて以下のようなご質問をいただきました。


ご教授お願いします。
エクスチェンジオンラインにOutlook2013で接続しております。
共有のメールボックスに対しての検索機能ですが
フォルダを検索、見つからない場合は共有メールボックス全体を検索という動作ができず。
困っております。

共有メールボックス全体を検索するようなマクロは可能でしょうか?

ご回答お待ちしております。


残念ながら、マクロによる解決はできません。
共有メールボックス全体の検索ができないというのは、共有メールボックスをキャッシュしている場合の検索における制限事項になります。

Exchange サーバーにキャッシュ モードで接続している場合、検索のインデックスは Windows Desktop Search により作成されます。
そして、Windows Desktop Search が Outlook のメールのインデックスを作成する際には、OST や PST というファイルの単位でインデックスが生成され、[現在のメールボックス] を選択して検索される範囲は、選択しているフォルダーが含まれる OST や PST 全体を意味します。

ここで問題となるは、共有メールボックスのキャッシュが自分自身のメールボックスの OST に含まれているという点です。
[現在のメールボックス] で検索した際に、OST に含まれるすべてのアイテムを検索対象としてしまうと、自分のメールボックスのアイテムだけでなく、キャッシュされている共有メールボックスのアイテムまで検索されてしまうことになります。
それを防ぐため、OST で [現在のメールボックス] を選択した場合には、OST に含まれる自分自身のメールボックスのアイテムだけが対象となり、共有メールボックスは除外される動作となります。
さらに、[すべてのメールボックス] や [すべての Outlook アイテム] を選択した場合も、OST にキャッシュされた共有メールボックスは除外対象となります。

そして、共有メールボックスのような除外対象のフォルダーは、そのフォルダーを選択している場合だけ検索ができるという動作となるのです。

回避策としては、[共有フォルダーをダウンロード] をオフにするというものがあります。
手順は以下の通りです。

  1. [ファイル]-[アカウント設定]-[アカウント設定] をクリックします。
  2. Exchange Online のアカウントをダブルクリックします。
  3. [詳細設定] をクリックします。
  4. [詳細設定] タブの [共有フォルダーをダウンロード] をオフにし、[OK] をクリックします。
  5. [次へ]、[完了] をクリックします。

このようにすると、共有メールボックスについてはキャッシュせずにオンラインでアクセスするようになりますが、オンラインで検索を実行すると Exchange サーバーで生成されたインデックスが使用され、この場合には共有メールボックスであってもメールボックス単位やサブフォルダーの検索が可能となります。

なお、共有メールボックスを個別の Exchange アカウントとして追加するという回避策もあるのですが、AutoMapping という機能が有効になっている場合に様々な問題が発生するため、おすすめはしません。

参考リンク: Understanding Search Scopes in Microsoft Outlook