• ベストアンサー

Excel2010でマクロが止まる

Excel2003で作成したマクロがExcel2010で使えません。 内容は任意のフォルダ内にある同じフォーマットの複数のファイルを1ファイルづつ開いては別の1つのファイルのシート毎にコピーしていくマクロなんですが、21個目のファイルを開こうとした際にループが止まってしまいます。 どなたか解決方法をご存知でしたらご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.2

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

conmas_1995
質問者

お礼

教えて頂きました通り、ファイルオープンの後にDoEventsを入れてみたところ、ループが止まる不具合は改善されました。 処理速度の低下も懸念されましたが、殆んど問題ありませんでした。 本当に助かりました。 ありがとうございました。

conmas_1995
質問者

補足

ご教授、ありがとうございます。 早速試してみます。

その他の回答 (1)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

1ファイルづつ開いていくブックは作業中開きっぱなしですか? それですと、メモリが足りなくなっている可能性があります。 そうで無いならソースを見ないと何とも言えません。

conmas_1995
質問者

お礼

ありがとうございました。 無事に解決する事が出来ました。 よろしければ、また次回もよろしくお願い致します。

conmas_1995
質問者

補足

ご教授、ありがとうございます 開いていくファイルは別のファイルのシートへコピーが完了後、閉じています。 マクロの内容は下記の様な感じです。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ' ファイルフォルダ内の先頭のファイル名の取得 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 ” の所で止まってしまいます。 よろしくお願い致します。

関連するQ&A