VBAを使ったCSV操作でハマったことのメモ
長時間マクロを動作させると途中で処理が終了しちゃう
仕事で20万行くらいのCSVファイルに対して一行ずつループ処理してると
なんのエラーや警告もなくVBAの処理が終わっちゃう現象が発生。
発生時の環境
OS:Windows 7 Professional
Office:Microsoft Offce 2010
原因
原因を調べてみたけど、よくわからなかった。
ただし、Microsoftのサイトで特定のOSとOfficeの組み合わせで発生することがわかった。
OSとExcelのバージョンがばっちり条件に当てはまってた...
回避策
Microsoftさんの言う回避策をとることに。
4つある回避策のうち、今回はDoEvents関数を使用する方法をとった。
For i = 1 In 10000
Worksheets("Sheet1").Cells(i, 1).Value = i
....
DoEvents
Next
こんな感じで、時間が掛かるループ処理の中でDoEvents関数を呼び出すだけ。
VBAが途中で停止することはなくなりました。