Excel【VBAでCopyメソッドやPasteメソッド、PasteSpecialメソッドがやたら遅い】
下記は、何も悪いことはしていない、何の変哲もないVBAのスクリプトだが、
こんなのの実行に30秒程度かかるなんて信じられるだろうか。
Sub test() Dim i As Integer Dim ra As Range Dim myra As Range Set myra = Range("A1:K1") myra.Value = 1 For Each ra In myra i = i + 1 ra.Copy ra.Offset(i) Next ra End Sub
環境はWindows7(64bit)、Excel2013(64bit)、RAM:24G、Core i7である。
不思議なことに上記コードが一瞬で終わる人(PC)もいる。
なんでPCスペックは申し分ないのに、こんなに時間がかかるんだろうと思って、調査開始。
2016年3月ぐらいから急にvbaのPaste処理の実行が重くなりだした。
その時たまたま更新プログラムをインストールしたのでそれが原因かと思った。
一旦エクセルの重くなりそうな処理をすべてオフにして、セキュリティもがばがばにして、PC自体パフォーマンス優先にして、ウイルス対策ソフトを停止したり、不要なファイルを削除したりした。
こんだけやっても、遅いまま。。。
さらにofficeをセーフモードで立ち上げてみても変わらず、PCをセーフモードで立ち上げたら今度はofficeのアプリケーションが起動できず、お手上げ状態。
あと考えられるのはクリップボードを経由するので、エクセルとは別のプロセスが悪さしてんだろうなと思って、msconfigを立ち上げて、スタートアップの不要そうなプログラムのチェックを外した。
再起動をかけ、マクロを実行すると、嘘のような速さ。
30秒かかっていた処理が一瞬で終わった!
一つ一つチェック外しては再起動をかけてを繰り返して調べていくと、なんとDropBoxが原因でした。。。
私のPC以外にも同様の現象に遭遇している人がいたので、その人のDropBoxもmsconfigのスタートアップでOFFにしたところ、見事現象が直りました。
さすがにこれは、原因なかなか気づかないや。まさかDropboxとは。。。
更新プログラムが影響していたのかどうかまでは不明。