人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

EXCEL97でVBA(CSVファイルを読んで、内容ごとにシートに書き込んで、そのシートをどんどん自身のブックに追加していく)を作り、それを実行後、手で、追加分のシートを別のブックにコピーした後、削除し、実行前の状態(追加シートのない元のもの)に戻すといったことを繰り返していると、VBAを実行しているEXCELの容量が実行前の容量に比べ、どんどん大きくなり、しまいには、使えないほど実行速度が落ちてしまうことになってしまいます。確かに追加のシート分は実行時増えますが、上記の通り、別のブックにコピー後、削除して、実行前の状態に戻してから再実行しているので、容量がどんどん増えていくのは、なんとも腑に落ちません。どうすれば、容量を増やさずに何回もVBAを実行できるようになるのでしょうか。どなたか、アドバイスをお願い致します。

●質問者: hatehan1
●カテゴリ:コンピュータ インターネット
✍キーワード:CSV Excel VBA アドバイス コピー
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● きゃづみぃ
●27ポイント

>それを実行後、手で、追加分のシートを別のブックにコピーした後、削除し、実行前の状態(追加シートのない元のもの)に戻すといったことを繰り返していると

この処理で 何がしたいのか不明です。

実行前の状態に戻したいのならば、ファイルをいったん保存せずに 閉じて 開きなおしたらいいのでは ないのでしょうか?


2 ● ota2244
●27ポイント

VBA内でオブジェクトを解放していないのであれば、解放処理を入れてみてはいかがでしょうか?

それでダメならEXCEL-VBAがメモリリークを起こしている可能性はあります。


VBAのつくりを変えて、自身のブックに追加するのではなく、新規のブックに追加するなどの処理にする方が良いかもしれません。


3 ● kn1967
●26ポイント

>別のブックにコピー後、削除して、実行前の状態に戻してから再実行している


Excelはガベッジコレクション(内部の使わなくなった空間の廃棄)を行わず、Book内部の空いた空間を空いたままの状態で残してしまいます。

そのためファイルサイズは拡大の一途を辿ります。


対処としては、

(案1)連続して動かさない。

(案2)新しいBookを作成→そのBookの中にシートを作成→新しいBook自体を削除 という手順に変える。

(案3)移し変えるのではなく、別のBookというものに直接書き込むようなプログラムに変える。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ