dポイントプレゼントキャンペーン実施中!

Excel2003で作成したマクロがExcel2010で使えません。

内容は任意のフォルダ内にある同じフォーマットの複数のファイルを1ファイルづつ開いては別の1つのファイルのシート毎にコピーしていくマクロなんですが、21個目のファイルを開こうとした際にループが止まってしまいます。

どなたか解決方法をご存知でしたらご教授願います。

A 回答 (2件)

繰り返し処理の中に


DoEventsを1~数個程度追加して、システムが作業を続けていけるようにしてください。
(ファイル読み込みの直後またはコピーの直後がいいと思います。)

この回答への補足

ご教授、ありがとうございます。

早速試してみます。

補足日時:2011/07/13 17:34
    • good
    • 2
この回答へのお礼

教えて頂きました通り、ファイルオープンの後にDoEventsを入れてみたところ、ループが止まる不具合は改善されました。

処理速度の低下も懸念されましたが、殆んど問題ありませんでした。

本当に助かりました。

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

お礼日時:2011/07/15 10:52

1ファイルづつ開いていくブックは作業中開きっぱなしですか?


それですと、メモリが足りなくなっている可能性があります。
そうで無いならソースを見ないと何とも言えません。

この回答への補足

ご教授、ありがとうございます

開いていくファイルは別のファイルのシートへコピーが完了後、閉じています。


マクロの内容は下記の様な感じです。

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

' ファイルフォルダ内の先頭のファイル名の取得
strFILENAME = Dir(strPATHNAME & cnsDIR, vbNormal)


' フォルダ内のファイルを全て開くまで繰り返す
Do While strFILENAME <> "" ' (4)

' Excelファイルのみをピックアップ
If Right(strFILENAME, 3) = "xls" Or Right(strFILENAME, 3) = "XLS" Then

Workbooks.Open Filename:=strPATHNAME & "\" & strFILENAME 'フォルダ内のExcelファイルを開く


Call DATA_COPY(strFILENAME) 'データコピーへ

Else

GoTo NXT_File:

End If

Windows(strFILENAME).Activate
ActiveWorkbook.Close SaveChanges:=False 'Excelファイルを閉じる

NXT_File:

' 次のファイル名を取得
strFILENAME = Dir() ' (6)

Loop

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

上記構文中の”Workbooks.Open Filename:=strPATHNAME & "\" & strFILENAME ”
の所で止まってしまいます。

よろしくお願い致します。

補足日時:2011/07/13 17:32
    • good
    • 0
この回答へのお礼

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

無事に解決する事が出来ました。

よろしければ、また次回もよろしくお願い致します。

お礼日時:2011/07/15 11:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!