かなりハマったので残しておきます。
#環境
- OS:Windows 10 professional 64bit
- メモリ:16GB
- ソフト:Excel 2010
32bit64bitでした。。。
#現象
##やろうとしていたこと
Excelのマクロで「ファイルを開く→操作→保存→閉じる」をフォルダ配下のファイルに対してLoop実行
##起こったこと
ある程度実行するとWindowsのダイアログでメモリが不足しています、と表示されマクロが落ちる
#調査と対処
##対処その1:まず疑うは己の未熟さ
ということで、マクロでオブジェクトの開放をし忘れているんじゃないかと考え、使い終わったものは手当たりしだいに空にしていく
##結果その1
ハズレ。事象は変わらず。
##現象を再確認
メモリ不足とは、一体何が不足しているのか、タスクマネージャーから確認
→マクロ実行中にコミット済みメモリが際限なく増え続ける
##対処その2:外からメモリ解放させてみる
Windows Server 2003 Resource Kit Tools
とりあえずこれで試してみる。
##結果その2
効果なし
##対処その3:splwow64を終了してみる
【Windows10 Creators】印刷時にコミット済みメモリが解放されずにどんどん増える。最終的にメモリ不足になり画面が真っ黒になる
調べているとこんな記事にも遭遇。環境的には当たりだけど、印刷してない、けど印刷設定はいじってるな。。。とか思いつつ、タスクマネージャーからsplwow64を終了してみる。
##結果その3
コミット済み27GB→3GBまで減った。こいつが原因!
#根本対処
結論から言うとまだです。
使っているプリンタのドライバは削除しましたが、改善していません。
現状、ループをある程度に切って、都度プロセスを終了しています。
解決策を見つけたら追記します。& ご存知でしたらコメント下さい!
#2017/06/24追記
環境について思い違いがあってOfficeが64bitでした。64bitアプリケーションでsplwow64が呼ばれる事自体なんかおかしい気がしています。
対処としてはofficeを32bitにするか、最新版のOfficeにするかですね。
そもそも2010なんか使ってるんじゃないよって話で。