• ベストアンサー

エクセルマクロの処理スピードUP

エクセルマクロを使用してエクセルシートからデータを順次読みとり書き込む処理をしていますが時間がかかり困っています。CPUやメモリなどの資源を常に限界まで使用したり、ロジックを工夫したりして大幅にスピードUPしましたがそれでもまだ3日以上かかります。自分の知識、能力ではもう限界です。ここをこうすれば処理が速くなった、という経験や知識をお持ちの方、些細なことでも教えてください、お願いします。(SQLを必要としないデータ、1つのファイルのライン数が多くても4万ラインまで、後で手で編集したり分析ツールが使用しやすいなどの理由でエクセルを使用していますが、ファイル数は5000、サイズは計15Gになります。)またこちらのPC環境はCPU:ペンタ3の866、メモリ:512、OS:2000、エクセル:2000です。

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

  • ベストアンサー
回答No.2

エクセルファイル間のやり取りではなく テキストファイルを利用したもの に変えてみてはどうでしょうか。 どのようなデータ、処理か 分かりませんが、必要な項目のデータを 集めるようなものであれば 入力・出力をテキストで行って 1行読む、処理、書き込む、次へ。 結果をエクセルで開く。 シートへのアクセスは 時間のかかるイメージがあるもので。 4万行を表示せず済みます。

505696
質問者

お礼

回答ありがとうございます。 やはりそれが正論でしょうね...少し意固地になっていました。 どの位速くなるかわかりませんが試してみます。

その他の回答 (1)

  • tamazo-
  • ベストアンサー率60% (35/58)
回答No.1

まずよくやるのが ScreenUpdating = False ですが、当然入ってますよね。 あとはCellやRangeの余計なSelectをなくすとか。 それと、Integer型の変数は基本的に使わないほうが良いです。Long型にしましょう。 Windowsの内部処理が32bit(=4byte)で行われていてInteger型の16bit(=2byte)を32bitに変換しながらCodeを実行するためです。 5分くらいかかるマクロが25%速くなった経験があります。 

505696
質問者

お礼

回答ありがとうございました。 今までIntegerが当たり前、の感覚を持っていました。

関連するQ&A

  • Excel 2013処理スピードを2003並に

    Excel 2013で セルから次のセルへのデータ入力も、処理が遅く困っています。 これまで2003を使っていましたが、スムーズにデータ入力も処理もでき、遅いとは感じませんでした。 なお、アニメーション効果を無効化もしてみましたが、効果を感じられません。 入力、処理の速度を2003並にする方法を教えてくさい。宜しくお願いします。 使っているPC プロセッサ Intel(R)Celeron(R)CPU 430 1.80GHz 1.79Ghz 実装メモリ 2.00GB   32ビットオペレーティングシステム ローカルデスク 143GB  空90GB

  • エクセルのマクロと処理スピード

    エクセルでファイルサイズが1Mぐらいの時、マクロを作成しました。その後、だんだんとデータが増えるにつれて、マクロの処理スピードが遅くなってきました。現在のファイルサイズは1.8Mぐらいなのですが、この先情報量が増えると共にマクロの処理スピードは遅くなっていくのでしょうか? ちなみにマクロが処理するのは12行挿入とその行に番号を打つのと一列のオートフィル(12行)だけなのです。全体のファイルサイズとマクロの処理スピードに関連があるのでしょうか?・・・現実には遅くなって来てますが・・・。知ってる方教えて下さい。

  • Excel 2013処理スピードを速くする方法

    Excel 2013の処理スピードが遅い原因は何ですか。速くする方法を教えて下さい。 よろしくお願いします。 これまで2003を使っていましたが、スムーズにデータ入力も処理もでき、遅いとは感じませんでした。 使っているPC プロセッサ Intel(R)Celeron(R)CPU 430 1.80GHz 1.79Ghz 実装メモリ 2.00GB 32ビットオペレーティングシステム ローカルデスク 143GB  空90GB

  • Excelマクロ処理の裏でWordを使いたい

    現在、Excelマクロツールの改修を行っています。 PJ毎のデータを集計するツールで、データが多い為処理に著しく時間がかかります。 軽量化による処理時間も限界なようなです。 せめて処理をバックグラウンドで走らせた状態で他の作業をしていたいのですが、マクロが動いている間、他のOfficeツール(WordやOutlook)もほとんど使えない状態になります。 繰り返しの多いループの部分では「DoEvents」で用いて、処理をシステムに戻すようにしているので、 固まってはいないのですが、WordやOutlookはほぼ反応しません。 VBA処理中に他のOfficeツールが使用できるように、VBAの記述で対応できないでしょうか? 自分の環境:  OS:Windows 7 Pro SP1 Office:Microsoft Office 2010 Plus よろしくお願いいたします。

  • エクセルのマクロの動きが鈍いです

    エクセル2013を使ってますがマクロを多少と関数を使ってます。上下右左のカーソルの動きのテンポが遅いです。おそらく処理速度の問題ではないかと思います CPUが現在i7 メモリ16G ウィンドウズ10PRO64ビット です。 CPUをi9のPCに変更したら早くなりますか? なる様なら買い替えも検討してます エクセルの処理速度は何を多くしたら早くなりますか? よろしくお願いします

  • エクセルのデーター数

    為替FXで65000個ぐらいのデーターを エクセルで使用しています。 保存を失敗したりします。 エクセルの使用可能データー数はいくつぐらいが基準なのでしょうか? 65000個のデーターをうまく使う方法はありますでしょうか? OS  XP Home Excel 2002 CPU Core2Duo @3.16GHz メモリ 3.17GHz (2Gを2枚のデュアル)

  • Excel マクロ SQL実行について

    いつもお世話になっております。 現在、Excel1997と2007でマクロを作成しております。 使用している環境は様々でOSは2000~XPまでです。 っで質問なんですが、「マクロ」というシートと「データ」というシートがあったとして、「マクロ」シートにはボタンがあり、ボタンを押すとマクロが実行します。 マクロが実行されると「データ」というシートにあるデータをマクロ内のSQLで集計して、新しい「出力」というシートに吐き出します。 現在マクロ内のSQLはDAOライブラリを使用しています。EXCELマクロ内でSQLを使用する場合にDAOやADO等のライブラリを使用せずにSQLを実行することは可能でしょうか?

  • データ処理 PC購入検討

    使用しているパソコンでは処理がきつくなってきたので新しいパソコンを買う予定です。 現在は以下のとおりです。 メモリ:DDR2 4GB CPU:Q6600 OS:Windows 7 Professional Excel2010で数万件~十数万件 ファイル容量50MB~ 上記のデータの編集やちょろっと仮想OS、独自のソフト使用などが主な利用方法です。 Access2010やSmoothCSVも使っていますが、使いがってからどうしてもExcelが手放せないです。 ゲームはしないのでグラボはいりません。 CPU:i5-4460 メモリ DDR3 16G でいいのかなぁと考えていますが、今ひとつピンときません。 どんなもんでしょうか?

  • 2005で動くのに2008では処理負荷が高い

    ドットネットで作成されたアプリケーションを SQLサーバーを用いてクラサバ形式で業務を行います。 本番実施前に、ノートPCにSQLサーバー2005エクスプレスを入れて テスト環境として1台のみで使用していた際は問題ありませんでした。 本番では、WIN2008サーバーにSQLサーバー2008を入れて使用したのですが、 サーバーに対して、クライアント1台しか接続していない状態でも処理負荷が高く、 動作が非常に遅くなり、ノートPCよりレスポンスが3倍ほどかかるようになりました。 データ件数は同じ状態です。(15万件ほど) 一部のやや複雑な条件抽出処理では、本番サーバー環境側は処理が停止してしまいます。 (ノートPCではやや時間がかかるもののきちんと結果が戻ってきますが、  本番側は数時間待っても結果が戻らず停止と同じ状態です) 本番サーバーの状況として、メモリ、ネットワークは殆ど使用しておらず、 CPUのみ25%を占有し続けている状態で、処理負荷がかかっているようです。 当然ながらノートPCのCPUよるは遥かに高性能です。 本番環境のSQLサーバ2008で初期データを作成する際、 2005エクスプレスで作成した初期データ(MDFファイル)を 2008側でアタッチしただけです。 テスト環境のノートPCの方が性能が良く、 高額な本番環境のサーバーが使いものにならない状態です。 直すべき点等があればご教授お願いします。

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

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

専門家に質問してみよう