新しいExcelではマクロの実行速度が遅くなりますか? (Microsoft Excel)
Daveには、古いバージョンのExcel97がまだインストールされているWindowsXPシステムがあります。そのシステムには、ワークシートの情報を処理するために使用されるマクロがあります。 500行の情報を約12秒で処理できます。 Windows7でExcel2010を実行している新しいマシンでは、同じデータで動作する同じマクロの実行に約3〜4分かかります。両方のマシンには、同じ量のメモリ(4 Gb)と同等のプロセッサが搭載されています。 Daveは、新しいバージョンのExcelでマクロの実行が非常に遅くなる理由を疑問に思います。
実際にコードを見ずに最も一般的なコメント以外のことをするのは非常に難しいですが、それは何も言うことがないという意味ではありません。 :>)最初にやりたいことは、マクロがどのように機能しているかを確認することです。たとえば、ワークシートのすべての行をステップスルーして処理を実行しますか? (マクロが500行の情報を処理している場合でも、ワークシートのすべての行をステップスルーしているわけではありません。)これが重要な理由は、以前のバージョンのExcelではワークシートで65,000行以上しか使用されていなかったためです。最新バージョンは、16倍の行(1,000,000を超える)を処理できます。マクロの実行に12秒かかっていた場合、16倍の長さは192秒になります。これは、3〜4分です。
以前のバージョンのExcelでは行われていなかった方法で、Excel2010がプリンタードライバーとかなり定期的に通信するという報告もあります。マクロの開始時に通信をオフにすることで、これがマクロの速度を低下させているかどうかを判断できます。
Application.PrintCommunication = False
マクロの最後で、Excelが再びプリンターと通信できるように、プロパティをTrueに戻すことを忘れないでください。
たとえ微妙な違いがあっても、新しいマシンでは何かが違う可能性もあります。たとえば、新しいマシンでは、ウイルス対策プログラムから音声認識ソフトウェアまで、古いマシンとは異なるバックグラウンドプログラムを実行できます。さらに、以前のシステムにはないいくつかの異なるExcelアドインがロードされている可能性があります。そのようなことがマクロのパフォーマンスに影響を与えるとは思わないでしょうが、実際には影響を及ぼします。もちろん、何がロードされているかを追跡し、それを無効にしてから、マクロの実行を再試行するまで、わかりません。
また、新しいマシンには定期的にポーリングする必要のある外部デバイスがいくつかあり、速度が低下する可能性があります。私のオフィスには、USBポートを介して接続された外付けハードドライブを備えたシステムがあります。時々、システム自体(Windows)が外に出て、外付けドライブの電源を入れる必要があり、これが起こっている間、物事は本質的にコンピューター上で停止します。有罪のデバイスは、USBアタッチメント、スキャナー、ネットワークドライブなどである可能性があります。特に、それほど長くはかからないものの速度が低下する場合は、非常にイライラする可能性があります。
この場合の良い提案は、単一のExcel2010システムで見つけたものだけに依存しないことです。複数のマシンにアクセスできる場合(おそらく不在の場合でも)、それらのマシンでマクロを試して、何が起こるかを確認してください。実行速度が速い場合は、遅い2010システムで目に見えない何かが働いていることがわかります。
すべてが本当に「等しい」ことがわかった場合は、システムのVBエディターにアクセスして、マクロのさまざまな部分のタイミングを開始する必要があります。これは面倒ですが、マクロが行き詰まっている場所を正確に絞り込むのに役立ちます。
この後者のルートを選択する場合は、優れたExcelVBAプログラマーのリファレンスブックに投資する価値があります。市場にはいくつかありますので、少し買い物をしてください。 (John Walkenbachによって作成されたものは間違いありません。また、_ Excel 2007 VBAプログラマーズリファレンス_について良いことを聞いています。)
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(12440)はMicrosoft Excel2010に適用されます。