FSO ドライブ、フォルダ、ファイルの取得
以下のコードは、FileSystemObject
クラスを使用して、ドライブ、フォルダ、ファイルの情報を取得する方法を示しています。
' FSO ドライブ、フォルダ、ファイルの取得
Private Sub FSO_Drive_Folder_File()
' 参照設定「Microsoft Scripting Runtime」必要
With New FileSystemObject
' 以下は、参照設定有無にかかわらず使用可
'With CreateObject("Scripting.FileSystemObject")
Debug.Print .Drives.Count
' システム上のドライブの数
Debug.Print .GetDrive("C:").Path
' 指定されたドライブ(“C:”)のパスを取得
' C:
Dim myPath As String
myPath = "C:\TEMP"
Debug.Print .GetFolder(myPath).Name
' 指定されたパスのフォルダの名前を取得
' TEMP
Dim fileName As String
fileName = "fuga.txt"
Debug.Print .GetFile(myPath & "\" & fileName).Name
' 指定されたファイルのパス(myPath & "\" & fileName)からファイル名を取得
' fuga.txt
Debug.Print .GetFile(.BuildPath(myPath, fileName)).Name
' BuildPathメソッドを使用してフォルダパスとファイル名を結合し、
' ファイルのパスからファイル名を取得
' fuga.txt
End With
End Sub
コードの詳細な説明
- FileSystemObject のインスタンスの作成:
With New FileSystemObject ' 参照設定がない場合は以下の方法でインスタンスを作成 ' With CreateObject("Scripting.FileSystemObject")
FileSystemObject
クラスのインスタンスを作成し、そのインスタンスに対して操作を行います。- 参照設定を行わずに使用する場合は、
CreateObject
を使用します。
- システム上のドライブの数を取得:
Debug.Print .Drives.Count
Drives.Count
プロパティを使用して、システム上のドライブの数を取得します。
- 指定されたドライブのパスを取得:
Debug.Print .GetDrive("C:").Path
GetDrive
メソッドを使用して、指定されたドライブ(この場合は “C:”)のパスを取得します。
- フォルダの名前を取得:
Dim myPath As String myPath = "C:\TEMP" Debug.Print .GetFolder(myPath).Name
GetFolder
メソッドを使用して、指定されたパス(myPath
)のフォルダの名前を取得します。
- ファイルの名前を取得:
Dim fileName As String fileName = "fuga.txt" Debug.Print .GetFile(myPath & "\" & fileName).Name
GetFile
メソッドを使用して、指定されたファイルのフルパス(myPath & "\" & fileName
)からファイル名を取得します。
- BuildPath メソッドを使用してパスを結合し、ファイルの名前を取得:
Debug.Print .GetFile(.BuildPath(myPath, fileName)).Name
BuildPath
メソッドを使用してフォルダパス(myPath
)とファイル名(fileName
)を結合し、その結合されたパスからファイル名を取得します。
実行結果の例
例えば、以下のようなデバッグ出力が得られます:
6
C:
TEMP
fuga.txt
fuga.txt
このコードは、ファイルシステムの操作に関する基本的な機能を示しており、ドライブ、フォルダ、ファイルの存在確認や名前の取得などに役立ちます。