tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^5: Excel処理の繰り返しでNG
投稿日: 2010/02/14(Sun) 10:35
投稿者魔界の仮面弁士
>     '前回と同じく、1回目はOKなのですが、2回目以降が旨く処理されない
同じ間違いを繰り返していますよ。

> '    xlSheet.Copy After:=Sheets(1)  '別の書き方でも試したが結果は同じ
この書き方にしても、
>         .Copy After:=Sheets(1)
この書き方にしても、
「Sheets」の親オブジェクトが指定されていません。

http://hanatyan.sakura.ne.jp/vbhlp/caution.htm
http://hanatyan.sakura.ne.jp/vbhlp/ExcelErr.htm

>     With xlBook.Sheets.Application
Application プロパティを使っているのは、何のためですか?
そこから返されるオブジェクトは、既に変数 xlApp に保持されていますよね。

>         .ActiveSheet.Activate
ActiveSheet を Activate する事に、何の意味があるのでしょうか?
また、そもそも ActiveSheet を使うのではなく、どのシートかを
明示的に指定すべきかと思います。

>     End
原則として、End ステートメントは使うべきではありません。
替わりに、すべてのフォームを Unload する事で終了させましょう。

End は強制終了の文として、かつての BASIC 言語の互換ステートメントとして
用意されてはいますが、正規の終了処理(QueryUnload イベント等)が呼び出されないため、
時として、意図せぬ動作を引き起こすことが知られています。

http://support.microsoft.com/kb/165824/ja
http://support.microsoft.com/kb/81469/en-us


> 挿入の部分は、その都度変化するので以前のままでもと思いますが、
ループの方が便利な事も多々あるので、どちらが良いとは一概には言えませんが、
ループ回数が多い場合には、無視できない程の速度差になる事もありますので、
一応、両方の方法を習得しておいた方が良いと思います。

たとえば今回のように、同一箇所に複数行を挿入する場合、
 ・「1 行挿入」を X 回繰り返す。
よりも
 ・「X 行挿入」を1回行う。
方が、Excel との通信回数が減る分、処理効率が良くなります。

特に VB6 から操作するなどの、「外部から」Excel を操作する際には、環境によっては
プロパティ/メソッドの通信回数の増加が、ハングアップの要因となる事もあります。
http://support.microsoft.com/kb/414107/ja

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

古いスレッドにレスはつけられません。