Excel VBA入門 | FileSystemObject-DriveExistsメソッド(ドライブの存在確認)

Excel VBA入門

公開日:2017年6月4日

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

ここでは、フォルダの存在を確認する方法としてFileSystemObjectオブジェクトのDriveExistsメソッドを使用する方法を解説します。

FileSystemObject-DriveExistsメソッド(ドライブの存在確認)【Excel VBA入門】
目次

1.基本形

FSO.FolderExists(DriveName) →True/False

変数説明
FSOFileSystemオブジェクト変数。FileSystemオブジェクトとして宣言して格納した変数です。
引数説明
DriveNameドライブ名を指定します(詳細は後述)。

ドライブが存在すればTrueを、存在しなければFalseを返します。

2.使用例

次の例では、Cドライブが存在するかどうか確認してTrueまたはFalseをメッセージ表示します。

Sub ドライブの存在を確認する()
 
Dim FSO As New FileSystemObject     '(1)
Dim buf As String
'FSOの変数名は自由に設定してください。

buf = FSO.DriveExists("C")   '(2)

MsgBox buf   '(4)

End Sub

【解説】

(1)Dim FSO As New FileSystemObject
→FileSystemObjectオブジェクトを使用する際のおまじないです。FileSystemObjectオブジェクト変数FSOの宣言と変数FSOにFileSystemObjectオブジェクトの参照への代入を同時に1行で行っています。

おまじないには事前バインディングと実行時バインディングがありますが、ここでは事前バインディングを使用しています。

なお、FileSystemObjextオブジェクトを使用する場合には前もって、参照設定で「Microsoft Scripting Runtime」を有効にしておきます。

※FileSystemObjectオブジェクトの設定は「Excel VBA入門 | FileSystemObjectオブジェクト(概要)」を参照ください。

(2)buf = FSO.DriveExists("C")
→Cドライブが存在するかどうかの結果をString型の変数bufに代入しています。

パス情報(引数DriveName)はWindows環境であれば、大文字・小文字を区別しません。「C」を「c」と書いても動作します。

また、引数DriveNameに該当する「"C"」ですが、①「"C:"」のようにコロン(:)を付した記述や、②「"C:\"」のようにコロン(:)+パスの区切り文字(\)を付した記述でも構いません。共有ネットワークの場合には例えば「\\(IPアドレス)\ネットワーク名」といった記述でも動作します。