- ベストアンサー
Excel2010でマクロが止まる
Excel2003で作成したマクロがExcel2010で使えません。 内容は任意のフォルダ内にある同じフォーマットの複数のファイルを1ファイルづつ開いては別の1つのファイルのシート毎にコピーしていくマクロなんですが、21個目のファイルを開こうとした際にループが止まってしまいます。 どなたか解決方法をご存知でしたらご教授願います。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
繰り返し処理の中に DoEventsを1~数個程度追加して、システムが作業を続けていけるようにしてください。 (ファイル読み込みの直後またはコピーの直後がいいと思います。)
その他の回答 (1)
- mt2008
- ベストアンサー率52% (885/1701)
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 ” の所で止まってしまいます。 よろしくお願い致します。
お礼
教えて頂きました通り、ファイルオープンの後にDoEventsを入れてみたところ、ループが止まる不具合は改善されました。 処理速度の低下も懸念されましたが、殆んど問題ありませんでした。 本当に助かりました。 ありがとうございました。
補足
ご教授、ありがとうございます。 早速試してみます。