Excel VBA FileSystemObject(1)変数宣言など

Excel マクロ、VBA

スポンサーリンク

今回から、Excel VBAでファイルやフォルダを広く取り扱うことができるFileSystemObjectについて扱う。

けっこう幅広い用途があるので、何回かに記事を分ける。

FileSystemObjectを変数宣言する

FileSystemObjectについては、いったんFSOとかいう変数に格納する方法がメジャーだと思う(格納しない方法も稀に見かけるが)ので、以降は、FSOという変数に格納する方法のみ取り扱う。

宣言方法(1)推奨手順

まず、ExcelのVBE画面(Alt+F11で起動する)で、ツール→「参照設定」とし、次に「Microsoft Scripting Runtime」にチェックを入れておこう。

こんなことをするのも、 FileSystemObjectが外部ライブラリというやつだからなのだが、次に変数として宣言する時も、通常とは異なりNewというのを付けて宣言してやらないといけない。

Dim FSO As New FileSystemObject

または

Dim FSO As FileSystemObject
Set FSO = New FileSystemObject

とすれば良い。私は、1行で済ませられる

Dim FSO As New FileSystemObject

の方をいつも使っているので、以降もこれで説明する。

宣言 方法(2)CreateObjectによる

もう1つの方法は

Dim FSO As Object
Set FSO = CreateObject(“Scripting.FileSystemObject”)

というように変数宣言するもので、これなら「Microsoft Scripting Runtime」への参照設定は必要ないし、ある意味こちらが正統派の方法かもしれない。

しかしこの方法は、まず「 “Scripting.FileSystemObject” 」なんて難しいものを手入力しなきゃいけない。

それはIMEに登録しておくとしても、この方法を使うと、それ以降のソースコード作成において入力補完が効かなくなってしまう。

だから、この(2)の方法は私は一切使っていない。

FileオブジェクトやFolderオブジェクト

FileSystemObjectというのは、それ単体で使うよりはむしろ、Fileオブジェクト・Folderオブジェクトといったものに展開してから使うことが多いと思う。

たとえばファイルなら

FSO.GetFile(“C:\tmp\普通のファイル.xls”)

と、一度GetFileとしてFileオブジェクトというやつに展開する。

次に、フォルダなら

FSO.GetFolder(“C:\tmp”)

という感じだ。

ただまあ、そういうFileオブジェクトとかFolderオブジェクトとか、体系立てて説明していっても面倒なだけなので、その辺は細かく触れない。

次回以降、シチュエーションごとのサンプルコードを、深く考えずコピペして使えば良いようにして列挙していこうと思う。

スポンサーリンク