0

わずか 1 MB の Excel ファイルがありますが、クラッシュするまでメモリ使用量が無期限に増加します (6 GB 以上)。

シートは 100 の独立した行で構成され、それぞれ約 300 の列があり、アドインからデータを取り込み、Excel の計算を行います。Excel には、ローカルの Access DB に接続して 10,000 の ID を取得する VBA があり、一度に 100 のグループでそれらを通過し、(UDF を使用して) アドインからデータを取得してから、次の 100 に進みます。

次の手順を実行します。1) Access DB から 10,000 個の一意の 8 文字 ID のリストを取得し、それらを Sheet2 に挿入します (他の目的では使用されません) - この部分はあまりメモリを使用しません 2) VBA で - から開始一番上、一度に 100 個の ID のブロックをループし、それらをシート 1 の A1:A100 位置にコピーし、300 列の UDF を参照し、各行の列 A の ID に計算します 3) プルするシートを計算します各列の UDF からの新しいデータ

これは、100 ID の前のブロックがなくなったにもかかわらず、実行されるたびにメモリ使用量が増えるだけのようです (一度に 10,000 を実行するとクラッシュするように見えたので、このようにしました)。ワークブックは MANUAL 計算になっています (したがって、ステップ 3)。すべてのオブジェクトが設定されている = DB 情報のコピーは一度も行われません。

メモリ使用量が蓄積しないようにするにはどうすればよいですか? UDF が実行された後、メモリがクリアされないことに関連しているようです。100 個の ID のブロックごとに、Excel のキャッシュをクリアするか、VBA でリセットする方法はありますか? ありがとう

4

2 に答える 2

0

何度か繰り返した後にファイル「ActiveWorkbook.Save」を保存すると、メモリ キャッシュがクリアされ、多くの時間を無駄にすることなく、ファイルを保存して閉じ、再度開いたかのように処理が続行されます。

于 2016-05-18T15:08:53.880 に答える