2013年4月3日水曜日

VBA:FileSystemObjectは解放した方がいい

VBAの話です。
FileSystemObjectは解放すべきかどうなのか今までよく判らなかったんですが、解放した方がいいですね。
コードの中で一度や二度使って終了するなら解放しなくていいと思いますが、ループで繰り返し使う場合はプログラムが途中で止まってしまったりします。
私の場合はフォルダにあるファイルを1件ずつ検索し、ファイル名のリストと合致していたらある処理をする・・・という関数を、合計2000回くらいループで実行させてたんですが、プログラムの実行が終わっているのにwindowsのお待ちください状態が止まらない現象にあいました。
原因は関数の中でcreateしたFSOを初期化しなかったからだと思います。
Sub Hogehoge
  Dim FSO As Object
  Set FSO = CreateObject("Scripting.FileSystemObject")
  (処理)
  Set FSO = Nothing
End Sub
こんな感じで解放するとよいと思われます。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。