VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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

みたいな感じで処理することにします。

ありがとうございました。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -