Excel VBA入門 | FileSystemObjectオブジェクトモデル(概要)

Excel VBA入門

公開日:2017年5月26日 更新日:2017年6月8日

FileSystemObjectオブジェクト(モデル)は、Windowsスクリプトテクノロジの1つであるScriptランタイムに属したオブジェクトです(Excel VBA上ではScriptingのメンバに位置づけされています)。

ここでは、FileSystemObjectオブジェクトの概要について解説します。

1.FileSystemObjectオブジェクトの位置付け

上記に記載した通り、Windowsスクリプトテクノロジの1つであるScriptランタイムに属するオブジェクトです。

Windowsスクリプトテクノロジとは、Microsoft APIのリファレンスである「MSDN ライブラリ」の中でWEB開発の1項目に該当します(同項目としてJavaScriptなどがあります)。

Scriptランタイムとは、そのWindowsスクリプトテクノロジの1項目であり、同項目としては、VBScriptやWindows Script Hostなどがあります。

そしてそのScriptランタイムの1オブジェクトとして、FileSystemObjectオブジェクトが存在するということになります。

Excel VBA FileSystemObject

2.使用目的

FileSystemObjectオブジェクトは、ドライブやフォルダおよびファイルを操作する場合に使用します。

3.使い方

3-1.参照設定

上述の通り、FileSystemObjectオブジェクトはScriptingに属し、VBAの枠外に存在するためそのままではVBA上で使用することができません。

使用するには「参照設定」を行います。

VBE上のメニューより「ツール→参照設定」を選択。
一覧から「Microsoft Scripting Runtime」にチェックを入れてOKボタンを押します。

3-2.事前バインディングによる参照

使用時には次の通り宣言し、オブジェクトを変数に格納します。

Dim FSO As FileSystemObject
Set FSO = New FileSystemObject
'変数FSOは例示。自由に設定してください。

または次のように1行で表すこともできます。

Dim FSO As New FileSystemObject
'変数FSOは例示。自由に設定してください。

3-3.実行時バインディングによる参照

事前バインディングの代わりに次の実行時バインディングによる参照でも、FileSystemObjectオブジェクトを使用することができます。

Dim FSO As Object
'変数FSOは例示。自由に設定してください。
Set FSO = CreateObject("Scripting.FileSystemObject")

4.実行時バインディング使用時の注意

FileSystemObjectオブジェクトのみを使用する場合には、実行時バインディングでは参照設定を必要としません(事前バインディングでは必ず必要)。しかし、FileSystemObjectオブジェクト系統に属するオブジェクト(Folderオブジェクト、Fileオブジェクトなど)を使用する場合には実行時バインディングであっても参照設定が必要になります。

以上から、事前バインディング、実行時バインディングどちらの方法を使用する場合でも参照設定を行っておきましょう