• ベストアンサー

Excel VBAが徐々に遅くなる

エクセルのVBAであるテキストファイルを読み込み、計算してCSVで吐き出すというプログラムを組んでいます。 質問はその計算スピードが徐々に遅くなってしまうということです。 計算し始めは大体1テキストファイルを読み込んでCSVに吐き出すのに1分くらいで済むのですが、3,4時間回してると1テキストファイル⇒CSVに2,30分かかってしまいます。 シートが増えていたりグラフを追加したりはしていません。 また、VBAの変数もできるだけ初期化するようにしてます。 読み込んでいくテキストファイルのサイズもそんなに変わらないです。 何か考えられる原因はないでしょうか? ご教授宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >計算し始めは大体1テキストファイルを読み込んでCSVに吐き出す 「読み込んで」という、この過程に何が使われているのか分かりません。 コードをみないで、本来は、何も言うことも出来ません。しかし、通常、そのような内容の場合は、一切、ワークシートには出さないようにします。すべて、配列の中で処理していきます。 ワークシートに出せば、取り込んだものは、オブジェクトとして働いていますから、ブックの内部に積み下ろしされていないものが残しているような気がします。

kikei
質問者

お礼

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

その他の回答 (1)

  • stiffels
  • ベストアンサー率34% (25/72)
回答No.1

関数は永久ループさせないでタイマーで繰り返す (関数から抜けない限り内部で使用したメモリが自動開放されない) 使用済み配列は Erase する 使用済みオブジェクトは Nothing を Set する などいろいろと対策はありますが 残念ながらやはりインタープリタ言語なので メモリを完全に管理することはできないようです。。

kikei
質問者

お礼

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

関連するQ&A

専門家に質問してみよう