投稿日 | : 2003/08/05(Tue) 14:49 |
投稿者 | : ゆじゅ |
Eメール | : |
URL | : |
タイトル | : Re^4: VB-EXCEL 処理速度 |
>ユーザーから操作されたくない、という事であれば、Excel.Applicationオブジェクトの
>Interactive プロパティを使って、ユーザーからの操作を禁止するという手もあります。
>「RangeオブジェクトをSelectしてから、Selectionを操作する」のではなく、できるだけ
>直接「Rangeオブジェクトを操作する」ようなコーディングにする事をお奨めします。
>SelectやActive系の処理は、Excel内部でフォーカスの移動を伴いますので、
>その分、処理速度は低下しますし、必要なコード量も増加してしまいます。
>ActiveX DLLやActiveXコントロールといった「インプロセス」なオブジェクトなら、
>非表示にしておいた方が、(一般的には)高速に処理されます。
>しかし、Excelはアウトプロセスで処理されるものですので、
>Excel自体が表示されていて、かつ、アクティブ状態になっていた方が、
>高速に処理される結果となります。
>#ただし、処理内容やOSの種類、あるいは設定状態などによっては、
>#あまり速度差が無い事もありますけれどね。
ご回答ありがとうございます。
魔界の仮面弁士さんがおっしゃるようにプログラムを修正してみたところ、
感覚ですが15〜25%ぐらい処理速度が向上したように感じます。(当社比)
ただ、デバッグ中は処理遷移がわかりづらくなってしまう感じなので、
切り分けて使おうと思います。
結局、
With Excel.Applicationオブジェクト
.WindowState = xlMinimized '画面最小化
.Visible = True '可視状態
.Interactive = False 'ユーザー操作無効
End With
みたいな感じで処理することにします。
ありがとうございました。