インターネットから取得したExcelファイルを春M(SpringM)から起動したExcel2016で開こうとすると、
「メモリまたはディスクの空き容量が不足しているため、ドキュメントを開いたり、保存したりできません。」
と出て開けない問題。
環境はWin7 Pro SP1 64bit+Excel2016。
エクスプローラ→Excel
や
エクスプローラ→コマンドプロンプト(cmd.exe)→Excel
で起動した場合は問題なく表示できる。
最近のExcelはインターネットから取得したドキュメントは保護ビューで開く。どうもこのときにだけ何かがおかしくなっている模様。セキュリティセンターの設定を変更すれば保護ビューは無効に出来るが、これはやりたくない。
英語で検索すると、Excelでこのメッセージが出る問題はわんさか出てくる。
解決方法も色々(要は原因が特定できない)。原因が特定できるメッセージを出してほしいよなあ。
今回の場合、親プロセスで違いが出ているのは間違いない。UAC周りか環境変数が疑わしい。
表示できる場合と出来ない場合で環境変数等に違いは見られず。
グループポリシーとかアクセス権変更では上手くいかず。
Office 2013 - Word Error (24) - Excel - Not enough memory - Microsoft Community
を見ると、互換性周りで直ったという人がいるので、
SpringMを、
互換性のトラブルシューティング -> 推奨設定を使用する
で起動してみる。するとそのSpringMから起動したExcelでは問題なし。
ただし、SpringMを再起動するとダメ(設定保存してるはずなのに!)。
SpringM起動前に、sc stop "PcaSvc"すると問題なし。
ただし、やはりSpringMを再起動するとダメ。
互換性のフラグ周りで変なことになってる模様。
互換性設定どこかでしていたような気もしたので、
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Persisted
内の、springmの項目を削除。
でも症状変わらず。
これはもうプログラム互換性アシスタントがその仕様レベルでExcel2016とぶつかってるという考えの方が正しいようだ。
プログラム互換性アシスタントを一旦止めることにする。
Windows 8.1ミニTips (100) 「プログラム互換性アシスタント」を制御する●つの方法 | マイナビニュース
を参考に、Program Compatibility Assistant Serviceを無効化。
コマンドラインから、
sc qc "PcaSvc"
で、START_TYPEがAUTO_STARTからDISABLEDになったのを確認。
SpringMを再起動。
無事、SpringM→Excelから保護ビューで開くようになりました。
久々にMicrosoftクソだなと思いました。特にMicrosoftのフォーラムがノイジーすぎるあたりが×。
終わり。