【困りごと】
ExcelのVBAでWordを起動・RTF文書を読んでテキスト形式で保存・終了(Quit)しようとしたら、終了にやたら時間がかかる。デバッグしてみると、Quitの行から次の行に移動するのに分単位。
【前提】
ActiveDirectory環境&オフライン環境(インターネットには出られない)
office2013・office2010のPCが混在。
【調べたこと】
- 手動でWordを起動・終了すると、画面は消えるけどプロセスは残ったまま。
かなり待っていると、忘れた頃にプロセスが消える。 - office2013だから? と思ってたらPCごとに再現したりしなかったり。
-
ググると出てくるのは「Normal.dotを削除すべし」。でも、Normal.dotは肥大化している訳ではない(18KB程度)し、言われた通りに削除して再作成しても現象変わらず。
-
さらに検索ワードを変えて調べると、以下のブログを見つける。
Officeアプリケーションのプロセスがなかなか消えない - 前回よりは成長したブログ
内容は読んでもらうとして、これも欲しい情報ではなかった。(現象解決せず)
- 悩みながらExcelの画面を見つめているとちらつく、画面右上にあるアカウント名。これ、何のためにあるんだろ…ググると、サインインしている必要はなさそうなので、サインアウトすると、QuitでWordのプロセスが消えた。(お?)
- サインアウトで解決する=ネットワークのタイムアウト待ち を疑う。
再度サインインした状態と見比べようとするが、サインインできない。
なぜならここは「オフライン環境だから」。
→レジストリを削除するとサインイン状態になった。 - サインイン状態でネットワークモニタを起動させながらWordを起動・終了すると接続先を何度も切り替えながら外部に出ようとし(サインアウト情報を送りたい?)、最終的にタイムアウト・プロセス終了 となる。
【オチ】
office2013(おそらくそれ以降)でサインイン状態だから起きている現象。
起動したWordが終了する際にインターネットに出てサインアウト情報送ろうとしたけどできないからリトライを繰り返して遅延する。
【対応】
手動でサインアウト&今後サインインできなくして解決。
サインイン禁止については、以下の「レジストリ設定を使用してユーザーのログオン時に表示する ID の種類を決定する」の欄を参照。(私は4を選びました)
Office 2013 における ID、認証、および承認の概要 | Microsoft Docs
台数多いからグループポリシーで配布。
これがわかるのに3日使ったわ…