tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルセルのコメント参照でCPU高負荷状態に
記事No13036
投稿日: 2008/09/12(Fri) 11:27
投稿者VBAからVB転入者
VB初心者です。教えてください。
エクセルシート内のある範囲にあるセルのコメントを参照するようなコードを書いたのですが、実行してみるとCPUがぶん回って処理が遅いのです。

for i=1 to 100
  for j=1 to 100
    wkNote = wkSheet.Cells(i, j).NoteText
    msgbox(wkNote)
  Next j
Next i

以前エクセルVBAで同様のロジックを書いた時には処理は早かったのですが、VBではこういうものなのでしょうか?
それともVBロジック的にどこかマズいことをしているのでしょうか?

[ツリー表示へ]
タイトルRe: セルのコメント参照でCPU高負荷状態に
記事No13038
投稿日: 2008/09/12(Fri) 12:53
投稿者魔界の仮面弁士
> 以前エクセルVBAで同様のロジックを書いた時には処理は早かったのですが、
それは「自分自身」を操作していたからでしょう。

VBA から、別の Excel.Application を起動し、それを操作する分には、
VB6 と同等程度の速度にまで落ち込むかと思います。

 Set ap = New Excel.Application
 Set bk = ap.Workbooks.Add
 Set wkSheet = bk.Worksheets(1)
 ap.Visible = True
 For i = 1 To 100
 For j = 1 To 100
  'wkSheet に対する処理
 Next j, i


> それともVBロジック的にどこかマズいことをしているのでしょうか?
Cells プロパティ(これは、すべてのセル範囲を返すプロパティです)を
繰り返すかわりに、単一セルの Range を読み込み、それを Offset プロパティで
移動させていくなど、いくらかの効率化手法があるにはありますが、いずれにしても
外部から操作する以上、速度面では限界があるかと思いますよ。

[ツリー表示へ]
タイトルRe^2: セルのコメント参照でCPU高負荷状態に
記事No13044
投稿日: 2008/09/12(Fri) 17:44
投稿者VBAからVB転入者
> VBA から、別の Excel.Application を起動し、それを操作する分には、
> VB6 と同等程度の速度にまで落ち込むかと思います。

なるほど。。エクセルをヘビーに使用するような処理はVBよりもVBAの方が良さそうですね。
勉強になりました。ありがとうございました。

[ツリー表示へ]