プロが教える店舗&オフィスのセキュリティ対策術

エクセルのVBAであるテキストファイルを読み込み、計算してCSVで吐き出すというプログラムを組んでいます。
質問はその計算スピードが徐々に遅くなってしまうということです。

計算し始めは大体1テキストファイルを読み込んでCSVに吐き出すのに1分くらいで済むのですが、3,4時間回してると1テキストファイル⇒CSVに2,30分かかってしまいます。

シートが増えていたりグラフを追加したりはしていません。
また、VBAの変数もできるだけ初期化するようにしてます。
読み込んでいくテキストファイルのサイズもそんなに変わらないです。

何か考えられる原因はないでしょうか?
ご教授宜しくお願いします。

A 回答 (2件)

こんばんは。



>計算し始めは大体1テキストファイルを読み込んでCSVに吐き出す

「読み込んで」という、この過程に何が使われているのか分かりません。
コードをみないで、本来は、何も言うことも出来ません。しかし、通常、そのような内容の場合は、一切、ワークシートには出さないようにします。すべて、配列の中で処理していきます。

ワークシートに出せば、取り込んだものは、オブジェクトとして働いていますから、ブックの内部に積み下ろしされていないものが残しているような気がします。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ワークシートに出していたことが原因でした。
本来なら配列ですべて処理できればよいのですが、
複雑すぎて一旦シートに落として処理してました。

お礼日時:2007/01/24 12:13

関数は永久ループさせないでタイマーで繰り返す


(関数から抜けない限り内部で使用したメモリが自動開放されない)
使用済み配列は Erase する
使用済みオブジェクトは Nothing を Set する

などいろいろと対策はありますが
残念ながらやはりインタープリタ言語なので
メモリを完全に管理することはできないようです。。
    • good
    • 3
この回答へのお礼

いろいろ考慮した結果、シートを作成⇒削除を繰り返したことが
原因だったようです。
そこでプログラムを実行してるエクセルとは別のファイルに
シートを作成し、処理が終わったらエクセルごと閉じるという
プログラムに変えた結果、処理が遅くなることが解消されました。

回答ありがとうございました。

お礼日時:2007/01/24 12:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A