| 
    
     |  | ▼bykinさん、しのしのさん: 
 ありがとうございます。
 お陰様で違う視点に着目することができました。
 ご指摘頂いた点から検証してみました。
 
 結果、思いもしなかった原因が判明し、新たに頭を悩ませる事になりました。
 原因は「コピー元のファイル」のバージョン違いでした。
 開発は'97で行っているのですが、サンプルで貰った元ファイルが2000で
 作成されたものだったようです。
 今後、これを事前に判別するのが課題となります。
 
 
 >たとえば、"データ操作"中に、開いているブックのオブジェクトを取得しているのに、
 >きちんと、参照解放せぬままCLOSEしようとしていませんか?
 
 変種処理は処理毎にFunctionを作成しているのですが、
 解放ロジックは必要なのでしょうか?
 
 
 >#ブックのシートを参照設定しておいて、その解放がきちんとされていない。
 
 この参照設定の解放というのは、何をすれば良いのでしょうか。
 
 
 以下、検証詳細です。
 
 コピー元のファイルにはマクロ(コマンドボタン/処理は軽いもの)や
 セル式が埋め込まれたものですが、サイズは240kb程度です。
 シンプルにOpen→SaveAs→Closeとした場合にも処理ができなかったので、
 コピー元ファイルを適当な新規ブックで実行してみたところ、処理が成功しました。
 
 次に、問題のファイルを使用して、Saveの直前に
 Application.DisplayAlerts = True
 と記述し、システムのメッセージを表示させたところ、
 「このエクセルは最新版のExcelで作成されました」のメッセージが・・・。
 このメッセージに対して、手動で「はい」を押下すれば正常に保存され、
 「いいえ」を押下するとCloseされずに開いたままです。
 処理の最初に
 Application.DisplayAlerts = False
 を記述したので、「いいえ」を押下したのと同じ状態で処理が中断されたようです。
 
 それから、以前Bykinさんに教えていただいたSleepはWaitよりも効果を得ました。
 処理速度が落ちてしまうので最善の策とは言えませんが、各ファイル毎に
 Sleep 5000(5秒)
 とすれば、100ファイルの処理も可能となりました。
 (3000以下では強制終了となりました)
 
 ありがとうございました。
 
 |  |