FileSystemObjectのGetDriveNameメソッド
FileSystemObjectのGetDriveNameメソッドは、引数で渡されたフォルダパスやファイルパスからドライブ名のみを抽出します。
「C:¥aaaa¥bbbb¥cc.txt」が引数に渡されると「C:」を返します。
引数文字列のパスが存在するかどうかは判定しません。例えば、「C:¥Windows」を表す”%windir%”を引数に渡しても、”C:¥Windows”には展開されず、文字列”%windir%”にはドライブ名が含まれていないため、空文字列””を返します。
FileSystemObjectクラスのDriveExistsメソッドやGetDriveメソッドのように引数にドライブ名文字列を必要とする場合にファイルパスやフォルダパスからドライブ名のみを抽出する場合に、GetDriveNameメソッドは利用するとコードが単純になります。
FileSystemObjectの他のメソッドやプロパティは「FileSystemObjectとTextStreamのメソッド・プロパティ一覧」をご参照ください。
構文
Function GetDriveName(Path As String) As String
Path | フォルダパスやファイルパス文字列を指定します。環境変数は展開されません。
例えば、%windir%のような環境変数が渡されても実際のフォルダパスの”C:¥Windows”には展開しないため、「文字列”%windir%”にはドライブ名がない」と判定されてドライブ名の抽出は行えません。 |
戻り値 | 引数の文字列からドライブ名を抽出して返します。ドライブ名として判定できない場合は空文字列””を返します。 |
事前設定
以下のサンプルコードでは参照設定でFileSystemObjectクラスを利用できるようにしています。
FileSystemObjectクラスを利用するには、事前にVBA画面→ツールメニュー→参照設定、を選択し、参照設定ダイアログで「Microsoft Scripting Runtime」にチェックを付けます。
詳細は「VBAでのFileSystemObjectとTextStreamの使い方」の事前設定をご参照ください。
サンプルコード
ファイルパスからドライブ名を抽出するサンプルです。
%windir%のような展開されるとフォルダパスになる環境変数を使う場合にEnviron関数を使ってドライブ名を抽出する方法も書いています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
Sub FileSystemObjectGetDriveName() On Error GoTo ERR_LABEL Dim fso As New FileSystemObject '// FileSystemObjectクラス Dim sFilePath As String '// ファイルパス Dim sDrive As String '// ドライブ文字列 '// ファイルパスを設定 sFilePath = "C:\aaaa\bbbb\cc.txt" sDrive = fso.GetDriveName(sFilePath) '// "C:" Debug.Print sDrive sDrive = fso.GetDriveName("%windir%") '// "" Debug.Print sDrive sDrive = fso.GetDriveName(Environ("windir")) '// "C:" Debug.Print sDrive ERR_LABEL: '// エラー発生時 If Err.Number <> 0 Then '// エラー内容を出力 Debug.Print Err.Number & " " & Err.Description End If End Sub |
ファイルパスにドライブ名が含まれていればそれを返します。
FileSystemObjectのオブジェクト変数に対して、「Set fso = Nothing」のようなコードがありませんが、なくても問題ありません。
詳細については「VBAでのFileSystemObjectとTextStreamの使い方」をご参照ください。