- ベストアンサー
エクセルマクロで大量データ作成の件
エクセルマクロで大量のデータを作ろうとしています。100MBを超えたら、別ファイルに移して名前をつけて保存し、リソースを解放しながらプログラムを動かし続けてみていますが、それでも処理が進むと徐々に処理速度が遅くなってしまいます。 処理速度が遅くならないようにするコツを教えて頂きたく、宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
あてずっぽうですが、繰り返しやると何らかのリソースが解放されないのかも。 もちろんプログラミングに問題があるかも 一つ一つのExcelのファイルを作って、逐次実行するバッチファイルでも作ったらどうでしょうか。
その他の回答 (3)
- nda23
- ベストアンサー率54% (777/1415)
私もExcelのVBAで大量データを作ることがあります。 でも、処理速度の劣化が発生したことは1回もありません。 どうやっているのかコードが無いので何とも言えませんが、 長大な文字列型や、配列を使うか、セルを操作しなければ 速度は保たれるはずです。
お礼
コメントありがとうございます。 セルは結構操作しています。そのため、元々すごく速く処理は進みませんが、ある程度は想定内で、100MB貯めたらファイルに保存してリセットしているつもりでした。やりかたを見直してみます。
エクセルは単なる表計算アプリです。 大容量のデータを処理するのには不向きです。 SQL等のデータベースアプリをご利用下さい。 そしてエクセルをフロントエンドアプリとして使う。
お礼
コメントありがとうございます。 やはりエクセルのそもそも論に行き着いてしまうのですね。数万行のデータなら、まぁまぁの処理速度だったので、数万行ごとにメモリを解放すれば同程度の速度を維持できると思ったのですが。 データベースの勉強を考えます。
- imogasi
- ベストアンサー率27% (4737/17069)
なぜ大層なことをするのに、エクセルという、お門違いのソフトを使うのか。 データは乱数を使ったり、テーブルをランダムに引いて、意味がなくても良いものかな。 CSVファイルを作って、保存してはどうかな。 何レコードで保存するのがよいのか。 データベースソフトでも、利用者がプログラム作成なく読めると思う(そういう機能が用意されている場合が多い)し。 この質問はプロ向けすぎる質問ではないか。
お礼
コメントありがとうございます。 データベースの知識がなく、エクセルなら表操作とマクロによる操作が簡単で手っ取り早いので、いつもエクセルマクロで何でもやろうとしてしまいます。 データベースを勉強してみます。
お礼
コメントありがとうございます。 処理が続くと、何らかのリソースが解放されない。動作を見ていると、まさにそんな感じです。 処理の位置を随時記録して、ミスったらそこからリトライできるようなプログラムにしてみたいと思います。