オブジェクト変数の解放を行うことで改善できるか試してみた。
結論から言えば、効果がなかった。
後のために、以下にメモしておく。
1.背景
今までは下図枠内のように直接シート名を指定してセルの内容を
取り込んでいた。
下図枠内のようにオブジェクト変数を明示して、最後に解放することで
メモリの効率使用と処理速度向上ができないか試してみる。射撃戦関係は全て見直す。
2.結果
処理時間は徐々に遅くなっている(対策の効果がない)。
1回目 | 2回目 | 3回目 | 4回目 | 5回目 | 6回目 | 7回目 | 8回目 | 9回目 | 10回目 | |
VBA処理時間(sec) | 5.12 | 5.19 | 5.34 | 5.5 | 5.81 | 5.84 | 5.99 | 6.16 | 6.4 | 6.62 |
Python処理時間(sec) | 2.39 | 1.96 | 2 | 1.54 | 2.64 | 1.59 | 2.17 | 3.32 | 4 | 2.91 |
EXCELのメモリ容量も下図のように大きくなっている。
1回目の開始前
10回目の終了後(15MB大きくなっている)
3.参考資料
下記のWEBページにお世話になりました。ありがとうございます。
・EXCEL VBA オブジェクト変数の利用方法(Setステートメント WorkSheet WorkBook Range)
<個人的な感想>
改善されるかと期待したが、ガッカリした。
やはり一旦EXCELを終了させる事が当面の有効な対策である。