Excel VBA:特定のPCのみExcelのVBAの実行処理速度が異常に遅い場合の原因と対処

つい最近遭遇した特定のPCのみVBAの実行処理速度が異常に遅かった際の原因と対処方法について覚書。

もしも同じような状況に遭遇している場合は参考にしてください。

スポンサーリンク

発生した障害の内容

他のPCではおよそ数十秒で終わるExcelのVBAの処理が他の特定のPCでは数十分かかるようになってしまった。

エラー等の発生はなく、異常に遅くはなっても結果的には処理自体は正常に終わる。

実行しているVBAの処理内容

実行しているVBAの処理内容はCSVファイルをExcelで開き、CSVファイルの中身をVBAを実行しているExcelのシートにコピー&ペースト後にある種の計算処理をした結果を別のシートにコピー&ペーストするという処理を繰り返し実行するというもの。

繰り返し回数は多くて20回程度のため、通常であれば数十秒で終わる処理となっている。

VBAの実行処理速度が異常に遅くなった原因と対処

このPCにインストールされているクリップボードの履歴管理を行っているフリーソフトが原因だったことが判明した。

このフリーソフトは、CLCLというクリップボードにコピーされた内容を履歴として管理して過去にコピーされた値を再利用できるとても便利なフリーソフトで常駐プログラムとして動作しています。

実行しているVBAのプログラムの処理でコピー&ペーストを多量に行っており、VBAの処理でクリップボードへのコピー処理が行われるたびにフリーソフト側の処理(クリップボード監視)が動作してじゃまをしていることが原因となっていた。

フリーソフト側の処理が結果的にVBAの処理を遅延させていたことが原因なので、前にこのフリーソフトを終了させてからVBAを実行させたら問題なく他のPCと同じように数十秒で処理が終了した。

VBAの実行処理速度が異常に遅い場合の原因と対処のまとめ

今まで正常に動作していたプログラムが動かなくなったり、処理速度が異常に遅くなったりした場合は、VBAのプログラムの中身やExcelだけに問題点を絞るのではなく、まず最初に常駐しているソフトやOSのサービスなどに範囲を広げて原因を絞っていく方がよいです。

どうしてもExcelだけに目が行きがちですが、VBAの処理内容の中に他の常駐プログラムやOSのサービスに関係するような処理を動作させている場合は特に注意が必要です。

Safeモードなどでも動作させることができるのであれば、一旦SafeモードでVBAを実行させて結果を見るのが簡単かもしれません。

各PCにインストールするソフトウェアに制限をかけていたり、PCに環境差異がないような運用をしているのであれば別ですが、私の会社では個人の作業効率を考慮してある程度の自由度をもたせているのでインストールしているソフトなどに端末差異があります。

今回のVBAの障害は原因を見つけるまでに結構苦労したので覚書きしておきます。

コメント

タイトルとURLをコピーしました