• ベストアンサー

エクセルマクロで大量データ作成の件

エクセルマクロで大量のデータを作ろうとしています。100MBを超えたら、別ファイルに移して名前をつけて保存し、リソースを解放しながらプログラムを動かし続けてみていますが、それでも処理が進むと徐々に処理速度が遅くなってしまいます。 処理速度が遅くならないようにするコツを教えて頂きたく、宜しくお願いします。

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

  • ベストアンサー
  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.4

あてずっぽうですが、繰り返しやると何らかのリソースが解放されないのかも。 もちろんプログラミングに問題があるかも 一つ一つのExcelのファイルを作って、逐次実行するバッチファイルでも作ったらどうでしょうか。

246riser
質問者

お礼

コメントありがとうございます。 処理が続くと、何らかのリソースが解放されない。動作を見ていると、まさにそんな感じです。 処理の位置を随時記録して、ミスったらそこからリトライできるようなプログラムにしてみたいと思います。

その他の回答 (3)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

私もExcelのVBAで大量データを作ることがあります。 でも、処理速度の劣化が発生したことは1回もありません。 どうやっているのかコードが無いので何とも言えませんが、 長大な文字列型や、配列を使うか、セルを操作しなければ 速度は保たれるはずです。

246riser
質問者

お礼

コメントありがとうございます。 セルは結構操作しています。そのため、元々すごく速く処理は進みませんが、ある程度は想定内で、100MB貯めたらファイルに保存してリセットしているつもりでした。やりかたを見直してみます。

noname#242220
noname#242220
回答No.2

エクセルは単なる表計算アプリです。 大容量のデータを処理するのには不向きです。 SQL等のデータベースアプリをご利用下さい。 そしてエクセルをフロントエンドアプリとして使う。

246riser
質問者

お礼

コメントありがとうございます。 やはりエクセルのそもそも論に行き着いてしまうのですね。数万行のデータなら、まぁまぁの処理速度だったので、数万行ごとにメモリを解放すれば同程度の速度を維持できると思ったのですが。 データベースの勉強を考えます。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

なぜ大層なことをするのに、エクセルという、お門違いのソフトを使うのか。 データは乱数を使ったり、テーブルをランダムに引いて、意味がなくても良いものかな。 CSVファイルを作って、保存してはどうかな。 何レコードで保存するのがよいのか。 データベースソフトでも、利用者がプログラム作成なく読めると思う(そういう機能が用意されている場合が多い)し。 この質問はプロ向けすぎる質問ではないか。

246riser
質問者

お礼

コメントありがとうございます。 データベースの知識がなく、エクセルなら表操作とマクロによる操作が簡単で手っ取り早いので、いつもエクセルマクロで何でもやろうとしてしまいます。 データベースを勉強してみます。

関連するQ&A

  • エクセル フィルタで抽出したデータごとに別ファイルを作成したい(マクロ)

    エクセルのフィルタで抽出したデータをタイトル行ごとコピーし、別ファイルを作る、という作業が大量にあります。これをマクロ化したいのですが良い方法はありますか? 出来ればシートに抽出条件の名前を付けて、そのファイル名で保存、までできたらありがたいです。

  • エクセルにマクロが!

    エクセル(Excel2000)で、マクロを使っていないのにマクロが使われてしまいます。 例えば、 まず普通にスタート→プログラムと表示していき、エクセルを立ち上げる。 次にどこのセルでもいいから適当に文字を入力する。(例えば、A1にaと入力する) そして、ファイル→名前を付けて保存で保存する。 こうしてできたエクセルのファイルを普通に立ち上げると、「このファイルはマクロが使われています」と、マクロを有効にするか、無効にするかを確認する画面が出てきてしまいます。 どうしてでしょうか。直す方法はあるのですか。よろしくお願いします。

  • エクセルのマクロ(VBA?)でデータの取込と保存をしたいのですが?

    エクセルのマクロとVBAの違いもよくわかっていない素人ですが教えていただけると助かります。 ある値段情報AがテキストファイルまたはCSVファイルなどで保存してあり、それを1つずつ読み込み、エクセルのシート上のセルAに表示させる、それをマクロ?(プログラム)で、1つ目より2つ目のほうが高ければ、そのまま高いほうを表示させておき、安いほうは別のテキストファイルに書き込むようなことって可能ですか? つまり、処理するごとに、テキスト(CSV)のファイルからデータの読み込みと書き込みを行うようなことってできますか?もしできるのであれば、そのやり方について詳しく教えてください。詳しいホームページもあれば教えてください。よろしくお願いします。

  • Excelマクロについて

    Excelマクロ(VBA)で複数のExcelファイルを一括で処理するプログラムを作っているのですが、処理対象のExcelファイルにはマクロが記述されていて、Excelを開く毎に記述のマクロが動いてしまいます。 対象のExcelファイルをオープンする時に、マクロを無効にして開くすることは可能でしょうか? 今現在、Excelファイル開く時に使ってる命令は、 Workbooks.Open Filenameです。

  • Excelマクロの削除

    Excelにて別のExcelのデータをコピーし、名前を付けて保存するマクロを作成しております。 その際、新しく作成したファイルにマクロが残ってしまいます。そのファイルにマクロを残さない方法はありますか? またそのマクロをツール→マクロ→削除をしても次回、ファイルを開いたときに、マクロの有効無効を聞かれます。 他にマクロを削除する場所があるのでしょうか? よろしくお願いします。

  • エクセルマクロでファイルを保存するとき

    エクセル(2000)のマクロで、csvファイルを集計して、そのファイルをエクセル形式で保存しようとしています。 このとき、「カレンダー用データファイル」という名前で保存するように指定していますが、もし、同名のファイルが開いていたりすると エラーが出てしまいます。 マクロの中で、「カレンダー用データファイル」という名前のファイルが、現在開いていないか調べることが出来るのではと、いろいろ探してみたのですが、どうしても判りません。 どなたか 教えていただけませんか? また、同様のことを何度も繰り返すので上書き保存をしたいのですが、いちいち「同名のファイルがありますが上書きしますか?」というアラートを出さなくて住む方法もありましたら教えていただきたいです。

  • エクセルマクロについて

    いつもお世話になっております。 エクセルのマクロについて質問させていただきます。 仕事上測定した10回データを、エクセルで計算させ平均やσ出すという処理を毎回しているのですが、測定したデータというのが、csvファイルで10個できあがり、それを一つずつ開いては貼っての繰り返しをしています。 この作業をマクロで自動的に出来ないものかと思い質問させていただきました。 装置によって毎回.csvの前のファイル名が変る恐れがあるので、csvファイルの入っているフォルダ(ディレクトリを指定)を指定し、その中にあるcsvファイルを自動的に貼る事が出来る事が理想です。 VBAではこのような処理のサンプルプログラムがあるのですが、VBAはあまり解らないので出来ればマクロの記録からできればと思います。 宜しくお願い致します。

  • エクセルのマクロ

    エクセルで"123"と"234"というファイルがあるとします。 123を開いていない状態の時に、何かエクセルのファイルを名前を付けて保存→"234"に上書きすると、"123"の"A"というマクロが実行される様にできますか?

  • Excel97で作成したマクロをExcel2000で使えず・・・

    よ~く探せば同内容の質問が過去にあるかもしれないのですが、多すぎて探せなかったので、質問します。すいませんが宜しくお願いします。 会社のPC(OSはWin95)のエクセル97でマクロを作成して、共有データエリアに保存し、別のPC(OSはWin98)のエクセル2000で実行しようとしたら、***はマクロを含んでいますとメッセージが出て、マクロを有効にすると、オブジェクトライブラリは登録されていませんというメッセージが出てきたので、OKにし、もう一度マクロを有効にしたら、「***の修復   ***にエラーが検出されましたがMicrosoftExcelは次の修復を行うことによってファイルを開くことができました。修復を保持するにはこのファイルを保存してください。  VisualBasicプロジェクトが失われました。 ActiveXコントロールが失われました。」というエラーメッセージが出てきて、マクロがなくなってしまい、また新しくマクロを記録しようとしても、記録できません、というエラーメッセージが出てきてマクロが作れなくなってしまいました。 尚、セキュリティは中にしてありますが、低でもマクロの記録ができないです。なぜでしょう?

  • エクセルマクロでご教示ください

    エクセルで作られたデータファイルに対し、ある操作を施して上書き保存するというマクロを作りました。 そのマクロを走らせるとファイル名を聞いてきまして、そこでファイル名を入力してやれば、ある操作を施したあと 自動的に上書き保存までしてくれるのですが、対象ファイルが複数個あると、ひとつ実行したあとまたひとつ ファイル名を入れて、またそれが終ったら次のファイル名を・・・というように、ひとつひとつ実行しなければならない というのが現状です。 これを次のように改良したいのですが、どうすればいいのでしょうか? 1.マクロを立ち上げる。 2.処理する複数のファイルが入っている「フォルダ」を選ぶ。  (一覧表示のウィンドウが出てきて、その中で「フォルダ」を選ぶ) 3.そのフォルダの中に入っているエクセルファイル全てに対し、既に作成済みのマクロを順次実行する。 というものです。 よろしくお願いします。