起動しなくなったOutlookを復旧させたときの話
職場のOutlookが起動しなくなって、2日ほどかかって復旧させたときの話。
1.症状
Outlookアイコンをダブルクリックすると、「Outlookを起動しています」と、ウィンドウに表示されるものの、エラーメッセージも表示されず、何事もなかったように消えてOutlookは表示されなくなった。
プロセスを見ても、Outlookのプロセスは起動していなかった。
2.やったこと
- セーフモードでの起動
Outlookが起動に失敗すると、次に起動するときに、セーフモードで起動するかメッセージが出る。はいを選択すると、起動プロファイルを選択するようになるが、普通はプロファイルを複数作っていることはないので、表示されているプロファイルを選択して、OKボタンを押すしかない。
セーフモードは、アドインを読み込まずに起動するようで、アドインに原因がある場合は、アドインを解除するなどして起動しなおせば、これで解決するらしい。
今回は何度やっても、Outlookは起動しなかった。
- 追加でプロファイルを新規に作成
セーフモードで起動したときに出てくる起動プロファイルの選択画面で、オプションボタンを押すと、コンピュータにセットアップされたプロファイルの一覧が表示される。そこで追加ボタンを押して、新規にプロファイルを作ることができる。
新規のプロファイルの設定は、メールサーバー毎に異なるので説明は割愛。
- プロファイルの全部削除と新規作成
新たにプロファイルを作って、セーフモードで新たなプロファイルを指定しても、Outlookは起動しなかった。古い問題のあるプロファイルも残っているからか?とも思うようになった(よく考えれば、指定していないプロファイルが影響するはずはないのだが)
色々と調べるうちに、Outlookの初期化の情報に行き着いた。
要は、コンピュータにセットアップされたプロファイルを全部削除して、新たにプロファイルを作ること。これで、もし古いプロファイルが悪さをしていたのなら、その影響はなくなるはず。
結局は、これでもダメだった。もう絶望的な気分に。
- Outlookの設定ファイルの名前を一時的に変更
メールのプロファイルを作ると、次の場所にファイルができるらしい。
C:\Users\<username>\AppData\Local\Microsoft\Outlook ・・・①
C:\Users\<username>\Roaming\Local\Microsoft\Outlook ・・・②
自分のPCでは、①にプロファイル(.ost)が新たにできていた。
②のフォルダは、プロファイルを削除して、新たに作っても中味は変わらなかった。ここには、VbaProject.OTM というファイルがあった。こちらはOutlookのVBAプロジェクトの保存ファイルのようだ。
ここからはお勧めできないが、まず①のOutlookフォルダの名前を変えて(Outlook_bak などに)、新たにプロファイルを作ってみた。すると、Outlookフォルダが新たに作成された。
でもOutlookは起動しなかった。
次に、②のOutlookフォルダの名前を変えて、新たにプロファイルを作ってみた。やはり、Outlookフォルダが新たに作成された。
ここで、なんと!Outlookが無事起動した。このフォルダにあったVbaProject.OTMに不具合があったのか?
次に、プロファイルを全部削除するときに念のためにバックアップしていたVbaProject.OTMを②のフォルダにコピーしてみたら、Outlookは無事起動した。
ところが、マクロを実行するとOutlookが落ちた。VisualBasicEditor(VBE)を開こうとしても同じくOutlookが落ちた。やはり、VbaProject.OTMに不具合があるのだと確信した。
- VbaProject.OTM の作り直し
仕方なく、②のフォルダにコピーしたVbaProject.OTMは削除して、新たにVBEでマクロを作成して保存することで、新しいVbaProject.OTMを作成した(自動で作られる)。
ここに予めエクスポートしていたVBAのコードをインポートすることで、ようやく元の状態に戻すことができた。
ここに至るまで、ネットで調べながら試行錯誤したので、丸まる2日ほどかかってしまった。自分が調べた中では、VbaProject.OTMが原因で、Outlookが起動しなくなるという情報は見つからなかった。Outlook VBAを使う人口は、Excelに比べて圧倒的に少ないのも原因か?
3.教訓
Outlookの仕訳ルールをバックアップしていなかったため、膨大なメールの仕訳ルールの再設定に半日くらいを要した。
VBAのコードは、時々エクスポートしていたので、最小限の被害で済んだ。もし、VBAのコードがすべてパーになっていたことを考えると、ゾッとする。もう立ち直れなかったかもしれない
今回、つくづくバックアップの大切さを実感した事件だった。
日付の書式設定 yyyy/mm/dd
日付の書式を揃えたいときがよくあります。
私は日付は、yyyy/mm/dd (西暦4桁/月2桁/日2桁)としたい派です。
月日を2桁に揃えることで縦に並べた日付の幅が揃ってきれいに見えるんですね。
Excelの日付の表示形式には、標準ではこの設定はなくて、ユーザ定義で指定する必要があります。私は、毎回手で設定するのが面倒なので、1行のマクロを登録しています。
Sub MyDateFormat()
Selection.NumberFormatLocal = "yyyy/mm/dd"
End Sub
書式設定の対象を Selection. とすることで、1列全体でも飛び飛びのセルでも、とにかく選択しているセルの日付の書式を yyyy/mm/dd に設定してくれます。