FileSystemObjectのGetDriveメソッド
FileSystemObjectのGetDriveメソッドは、引数で指定したドライブ情報を保持するDriveオブジェクトを返します。
Driveオブジェクトを使うことで、ドライブのファイルシステムや容量や空き容量などを参照できます。
引数に渡すドライブ名は、ファイルパスやフォルダパスをそのまま渡すとドライブとして認識できないため編集が必要です。対応方法はサンプルコードで後述しています。
FileSystemObjectの他のメソッドやプロパティは「FileSystemObjectとTextStreamのメソッド・プロパティ一覧」をご参照ください。
構文
Function GetDrive(DriveSpec As String) As Drive
DriveSpec | ドライブ名の文字列を指定します。
ドライブ名として認識できるのは、Cドライブであれば、”C”、”C:”、”C:¥”の3種類です。区切り文字(¥マーク)の右側に文字列があるとドライブ名として認識しません。 |
戻り値 | 引数のドライブ情報をDriveオブジェクトとして返します。 |
エラー対応
GetDriveメソッドは主に2つのエラーが発生します。
- 引数文字列がファイルパスなどの純粋なドライブ名でない場合は「エラー:5 プロシージャの呼び出し、または引数が不正です。」が発生します。
- 引数に文字列以外が渡されると「エラー:438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。」が発生します。
エラーが発生するとメッセージボックスが表示され、処理はそこで止まってしまいます。
処理を止めないようにするためにはエラー処理を適切に行う必要があります。
具体的には「On Error Goto XXX」でエラー発生時にエラーラベルまで処理を飛ばしたり、「On Error Resume Next」でエラーが発生しても処理を継続するようにしておいたほうがよいでしょう。
事前設定
以下のサンプルコードでは参照設定でFileSystemObjectクラスを利用できるようにしています。
FileSystemObjectクラスを利用するには、事前にVBA画面→ツールメニュー→参照設定、を選択し、参照設定ダイアログで「Microsoft Scripting Runtime」にチェックを付けます。
詳細は「VBAでのFileSystemObjectとTextStreamの使い方」の事前設定をご参照ください。
サンプルコード
ファイルパスからドライブ名を取得し、そのドライブのDriveオブジェクトを取得し、ファイルシステムを出力するサンプルです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Sub FileSystemObjectGetDrive() On Error GoTo ERR_LABEL Dim fso As New FileSystemObject '// FileSystemObjectクラス Dim drv As Drive '// Driveクラス Dim sFilePath As String '// ファイルパス '// ファイルパスを設定 sFilePath = "C:\aaaa\bbbb\cc.txt" '// GetDriveメソッド実行 Set drv = fso.GetDrive(fso.GetDriveName(sFilePath)) Debug.Print drv.FileSystem ERR_LABEL: '// エラー発生時 If Err.Number <> 0 Then '// エラー内容を出力 Debug.Print Err.Number & " " & Err.Description End If End Sub |
実行結果
NTFS
ファイルパスからドライブ名を取得するためにGetDriveNameメソッドを使って、それをGetDriveメソッドの引数としています。
FileSystemObjectのオブジェクト変数に対して、「Set fso = Nothing」のようなコードがありませんが、なくても問題ありません。詳細については「VBAでのFileSystemObjectとTextStreamの使い方」をご参照ください。