e桐へ

2−3.連続シート書き出しに挑戦



 連続シート書きだしは・・・

わざわざ項目作成して説明するほどでもないのですが・・・

単に、「単一シート書き出しを、繰り返すだけ」です。一見簡単そうですね

ところが、なかなかうまくいきません・・・・理由は



うまくいかない理由は

 > 繰り返し(○○○○○○○)
 >   エクセル書き出し <EXCELファイル名>, <ワークシート名>, 項目名行=【する|しない】, ・・・・・・
 > 繰り返し終了

 ○ この繰り返しによる連続書き出しに、「エクセル終了(使用中?)のタイミング」が、うまくとれない為です。
   (他にも、「2−2」で、説明したようなエラーが原因の場合も、あります)

では、どうするか?・・・・残念ながら、・・・・・では、あきらめる?

  その前に、出来ないことを無理してやる必要があるのか?ということになりますね。
  「CSV・TXT書き出し」を実行しておき、エクセルで取り込めば済むことだし。

それも一つの方法でしょう。しかし、もしかしたら、なにか工夫次第では・・・と思われた方に、次の説明を紹介します。(といっても参考程度です)



では、なにか工夫をしてみましょう。


(1)終了状態を見て、判断してみる(一番簡単な方法です)

  &終了=99
  繰り返し(&終了<>0)
    エクセル書き出し <EXCELファイル名>, <ワークシート名>, 項目名行=【する|しない】, ・・・・・・
  繰り返し終了

上記のように繰り返しコマンドを、実行してみます。これで、&終了が「0」になるまで、実行されます。
パソコンに少し負担をかけますが、確実に処理を行うことができます。ただ、プログラム上のエラーによる無限ループに入るかも知れませんのでご注意ください

※上記コマンドでの注意・・・&終了の値が「0」になってると、次の「エクセル書き出しが実行されませんので、ご注意下さい。」


(2)少し時間をおいて実行する方法。(繰り返しが、ゆっくりまわれば、エクセルも終了してるかも?と、いうことで・・・)

  繰り返しのなかに、時間稼ぎをいれてみます

  繰り返し(&終了<>0)
    遅延 10
    エクセル書き出し <EXCELファイル名>, <ワークシート名>, 項目名行=【する|しない】, ・・・・・・
  繰り返し終了

ここでも問題が・・・と、いうより工夫が必要です。たしかに、「遅延」コマンドを挿入すれば、繰り返しのスピードがゆっくりまわるようになります。しかし、実は、「遅延」コマンドは、イベントで使用できません

そこで、http://www2u.biglobe.ne.jp/~s_tanaka/cgi-bin/bbs/bbs.cgi?function=logview_html&no=38#1893 より、

===============================
イベントで遅延コマンドが使用できないみたいですが、代わりに「#itvl」で使用してみました。

・1回だけ使用の場合
 &STR=#時刻
 繰り返し(#itvl(&STR,#時刻,3)<5)
 繰り返し終了

以下、掲示板参照ください

===============================

これを、利用して修正してみます

  繰り返し(&終了<>0)

    &STR=#時刻
    繰り返し(#時間(&STR,#時刻,3)<5)
    繰り返し終了

    エクセル書き出し <EXCELファイル名>, <ワークシート名>, 項目名行=【する|しない】, ・・・・・・
  繰り返し終了

このようにすれば、いいかもしれません。

  ・#時間( str1 , str2 , n ) (#時間 は #ITVL と書いてもかまいません。)
   >時間文字列 str1 から時間文字列 str2 の経過時間を、n で指定する単位の数値で求めます。
   >計算結果の単位は時間、分、秒のいずれかになります。


(3)実行回数(エラー回数)を、チェックしてみる。

  &実行回数=0
  繰り返し(&終了<>0)

    エクセル書き出し <EXCELファイル名>, <ワークシート名>, 項目名行=【する|しない】, ・・・・・・
    ケース開始
      ケース(&終了<>0)
        &実行回数=&実行回数+1

        ・・・・・・・ここに、エラー処理や判断処理を記述します

    ケース終了

  繰り返し終了

一定回数実行してもエラーの場合は、処理を確認するメッセージをだしてもいいですね
「再度実行する・次へ進む・止める」等

例:
>メッセージボックス "読み込みエラー", \
>  &sheet名[&i]+"で、継続しますか?\n\n\nはい・・・・・同じシート\nいいえ・・・・次のシート\nキャンセル・・止める", \
>  アイコン=?,ボタン指定=4,制御文字展開=する,&終了

このようなメッセージは、連続書き出し時も利用できます。

いずれも、参考程度ですが・・・是非お試しいただき、ご自分のデータ量と、PCのスペックにより最良の方法をください


ここの説明は、できるだけ、桐だけの処理で説明を紹介しましたので、なにか物足りない感じがしますが・・・

前へ上へ次へ