GetDriveName について
調べてはみましたけど、正直、何に使うのかよくわからないメソッドですw
■GetDriveNameメソッド
指定したパスからドライブの文字列を取得してくれるのだそうです
・構文
構文は以下の通りです
object.GetDriveName (path)
objectはFileSystemObjectのオブジェクトです
・パラメータ
メソッドのパラメータは以下の通りです
- path … ドライブ名を取得するパスを指定
パスとしては、存在しないドライブのパスも指定できてしまいます!
どういうこと!?w
これでドライブ名を取得してから、DriveExistsメソッドでドライブの存在確認をしないといけないのだろうか?
・戻り値
メソッドの戻り値は以下の通りです
- ドライブ名
そのままですけど、ドライブ名が返りますが、Cドライブの場合は「C:」という風にドライブのアルファベットとコロンが返ります
認識できないドライブ名の場合は、空文字が返ります
■例
・簡単なサンプル
①GetDriveNameのサンプル
Function GetDriveName_Sample(path As String) As String Dim obj As FileSystemObject Dim ret As String ' オブジェクトを作成 Set obj = New FileSystemObject ' GetDriveName ret = obj.GetDriveName(path) ' オブジェクトを破棄 Set obj = Nothing ' 結果を返す GetDriveName_Sample = ret End Function
②-01:呼び出し元関数のサンプル(空の文字列を指定)
Sub CallGetDriveName_Sample01() Dim path As String Dim ret As String ' 空文字 path = "" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "空文字 ........... [" & ret & "]" End Sub
出力結果(ドライブ名なし)
空文字 ........... []
②-02:呼び出し元関数のサンプル(コロン無しの文字列を指定)
Sub CallGetDriveName_Sample02() Dim path As String Dim ret As String ' コロン無 path = "C" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "コロン無 ......... [" & ret & "]" End Sub
出力結果(ドライブ名なし)
コロン無 ......... []
②-03:呼び出し元関数のサンプル(コロン有りの文字列を指定)
Sub CallGetDriveName_Sample03() Dim path As String Dim ret As String ' コロン有 path = "C:" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "コロン有 ......... [" & ret & "]" End Sub
出力結果(ドライブ名あり)
コロン有 ......... [C:]
②-04:呼び出し元関数のサンプル(コロン全角の文字列を指定)
Sub CallGetDriveName_Sample04() Dim path As String Dim ret As String ' コロン全角 path = "C:" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "コロン全角 ....... [" & ret & "]" End Sub
出力結果(ドライブ名なし)
コロン全角 ....... []
②-05:呼び出し元関数のサンプル(コロン以外の文字列を指定)
Sub CallGetDriveName_Sample05() Dim path As String Dim ret As String ' コロン以外 path = "C\" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "コロン以外 ....... [" & ret & "]" End Sub
出力結果(ドライブ名なし)
コロン以外 ....... []
②-06:呼び出し元関数のサンプル(区切り有りの文字列を指定)
Sub CallGetDriveName_Sample06() Dim path As String Dim ret As String ' 区切り有 path = "C:\" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "区切り有 ......... [" & ret & "]" End Sub
出力結果(ドライブ名あり)
区切り有 ......... [C:]
②-07:呼び出し元関数のサンプル(区切り全角の文字列を指定)
Sub CallGetDriveName_Sample07() Dim path As String Dim ret As String ' 区切り全角 path = "C:¥" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "区切り全角 ....... [" & ret & "]" End Sub
出力結果(ドライブ名あり)
区切り全角 ....... [C:]
②-08:呼び出し元関数のサンプル(スラッシュ有りの文字列を指定)
Sub CallGetDriveName_Sample08() Dim path As String Dim ret As String ' スラ有 path = "C:/" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "スラ有 ........... [" & ret & "]" End Sub
出力結果(ドライブ名あり)
スラ有 ........... [C:]
②-09:呼び出し元関数のサンプル(スラッシュ全角の文字列を指定)
Sub CallGetDriveName_Sample09() Dim path As String Dim ret As String ' スラ全角 path = "C:/" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "スラ全角 ......... [" & ret & "]" End Sub
出力結果(ドライブ名あり)
スラ全角 ......... [C:]
②-10:呼び出し元関数のサンプル(既存フォルダの文字列を指定)
Sub CallGetDriveName_Sample10() Dim path As String Dim ret As String ' 既存フォルダ path = "C:\Temp" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "既存フォルダ ..... [" & ret & "]" End Sub
出力結果(ドライブ名あり)
既存フォルダ ..... [C:]
②-11:呼び出し元関数のサンプル(既存フォルダと区切り有りの文字列を指定)
Sub CallGetDriveName_Sample11() Dim path As String Dim ret As String ' 既存フォルダと区切り有 path = "C:\Temp\" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "既存と区切り有 ... [" & ret & "]" End Sub
出力結果(ドライブ名あり)
既存と区切り有 ... [C:]
②-12:呼び出し元関数のサンプル(新規フォルダの文字列を指定)
Sub CallGetDriveName_Sample12() Dim path As String Dim ret As String ' 新規フォルダ path = "C:\Temp2" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "新規フォルダ ..... [" & ret & "]" End Sub
出力結果(ドライブ名あり)
新規フォルダ ..... [C:]
②-13:呼び出し元関数のサンプル(既存ファイルの文字列を指定)
Sub CallGetDriveName_Sample13() Dim path As String Dim ret As String ' 既存ファイル path = "C:\Temp\temp.txt" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "既存ファイル ..... [" & ret & "]" End Sub
出力結果(ドライブ名あり)
既存ファイル ..... [C:]
②-14:呼び出し元関数のサンプル(新規ファイルの文字列を指定)
Sub CallGetDriveName_Sample14() Dim path As String Dim ret As String ' 新規ファイル path = "C:\Temp\temp2.txt" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "新規ファイル ..... [" & ret & "]" End Sub
出力結果(ドライブ名あり)
新規ファイル ..... [C:]
②-15:呼び出し元関数のサンプル(新規ドライブの文字列を指定)
Sub CallGetDriveName_Sample15() Dim path As String Dim ret As String ' 新規ドライブ path = "X:\" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "新規ドライブ ..... [" & ret & "]" End Sub
出力結果(ドライブ名あり)
新規ドライブ ..... [X:]
②-16:呼び出し元関数のサンプル(ひらがなの文字列を指定)
Sub CallGetDriveName_Sample16() Dim path As String Dim ret As String ' ひらがな path = "あ:\" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "ひらがな ......... [" & ret & "]" End Sub
出力結果(ドライブ名あり)
ひらがな ......... [あ:]
②-17:呼び出し元関数のサンプル(カタカナの文字列を指定)
Sub CallGetDriveName_Sample17() Dim path As String Dim ret As String ' カタカナ path = "ア:\" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "カタカナ ......... [" & ret & "]" End Sub
出力結果(ドライブ名あり)
カタカナ ......... [ア:]
②-18:呼び出し元関数のサンプル(半角カタカナの文字列を指定)
Sub CallGetDriveName_Sample18() Dim path As String Dim ret As String ' 半角カタカナ path = "ア:\" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "半角カナ ......... [" & ret & "]" End Sub
出力結果(ドライブ名あり)
半角カナ ......... [ア:]
②-19:呼び出し元関数のサンプル(漢字の文字列を指定)
Sub CallGetDriveName_Sample19() Dim path As String Dim ret As String ' 漢字 path = "亜:\" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "漢字 ............. [" & ret & "]" End Sub
出力結果(ドライブ名あり)
漢字 ............. [亜:]
②-20:呼び出し元関数のサンプル(数字の文字列を指定)
Sub CallGetDriveName_Sample20() Dim path As String Dim ret As String ' 数字 path = "1:\" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "数字 ............. [" & ret & "]" End Sub
出力結果(ドライブ名なし)
数字 ............. []
②-21:呼び出し元関数のサンプル(全角数字の文字列を指定)
Sub CallGetDriveName_Sample21() Dim path As String Dim ret As String ' 全角数字 path = "1:\" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "全角数字 ......... [" & ret & "]" End Sub
出力結果(ドライブ名なし)
全角数字 ......... []
②-22:呼び出し元関数のサンプル(記号の文字列を指定)
Sub CallGetDriveName_Sample22() Dim path As String Dim ret As String ' 記号 path = "+:\" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "記号 ............. [" & ret & "]" End Sub
出力結果(ドライブ名なし)
記号 ............. []
②-23:呼び出し元関数のサンプル(全角記号の文字列を指定)
Sub CallGetDriveName_Sample23() Dim path As String Dim ret As String ' 全角記号 path = "+:\" ' 作成した関数を呼び出す ret = GetDriveName_Sample(path) Debug.Print "全角記号 ........ [" & ret & "]" End Sub
出力結果(ドライブ名なし)
全角記号 ........ []
③簡略化したGetDriveNameのサンプル
Function GetDriveName_Sample2(path As String) As String ' オブジェクトを作成 With New FileSystemObject ' 指定パスのドライブ名を返す GetDriveName_Sample2 = .GetDriveName(path) End With End Function
・説明
日本人なので、色々な文字をドライブに当てはめてみましたw
あくまでもドライブ名の文字列として、認識できるもの!?が取得されています
それがどういうルールなのか、判るようで判りませんねw
平仮名、片仮名、漢字のドライブ名はありなのね!?w
もちろん、これらのサンプルのようなドライブ名の付いたドライブが本当にあるのかは、DriveExistsメソッドで確認しないといけませんね!
半角だからと言って、何でもありってわけじゃない!
数字や記号は半角も全角も認められないわけですねー
・注意点
- 使い道がわからない!?
- アルファベットとコロンがあれば取得できる
- 平仮名、片仮名、漢字もドライブ名として取得できる
- フォルダパス、ファイルパスでもドライブ名は取得できる
- フォルダやファイルは既存ではない新規でもドライブ名は取得できる
- 存在しないドライブ名のパスでもエラーにはならない
- ドライブ名として認識できない場合は、空文字を返す
・その他
使い道を推測してみます・・
外部(メールやデータ等)から渡されたフォルダやファイルパスから、存在するドライブ名かを調べるため、
DriveExistsメソッドの引数に渡す文字列を取得するメソッドなのだと思います!(書いていてよくわからないw)
というわけで、次はDriveExistsメソッドを調べてみます
ではでは