こんにちは、Ryoです。
日々扱う機会が多いパソコンですが、扱っていると外付けドライブやネットワークドライブ、リムーバルディスクなどが増えていくので、どのドライブが何だったかわからなくなることもありますね。VBAではその場合にDriveTypeプロパティを使うことで調べることができます。今回はその内容について書いていきます。
1.サンプル概要
私が普段使用しているPCは外付けユニットなどもありドライブが多いので、すべてのドライブの種類を調べて表示させてみたいと思います。
実行結果によるとドライブ数としては13ありましたね。このように簡単に調べて表示できますので、手段として方法を知っておくのも良いのではないかと思います。
2.サンプルコード
Sub Sample1() Dim FSO As Object Dim DriveObject As Object Dim dr_msg As String 'FileSystemObjectを作成し変数に代入 Set FSO = CreateObject("Scripting.FileSystemObject") '全てのドライブを対象として処理を行う For Each DriveObject In FSO.Drives 'ドライブレターの取得(例 C:、D:など) dr_msg = dr_msg & DriveObject.DriveLetter & ": " 'DriveTypeプロパティでドライブ種類を取得 '「0」不明 '「1」リムーバルディスク '「2」ハードディスク '「3」ネットワークドライブ '「4」CD-ROMドライブ '「5」RAMディスク Select Case DriveObject.DriveType Case 0: dr_msg = dr_msg & "Unknown" & vbLf & vbLf Case 1: dr_msg = dr_msg & "Removable disk drive" & vbLf & vbLf Case 2: dr_msg = dr_msg & "Hard disk drive" & vbLf & vbLf Case 3: dr_msg = dr_msg & "Network drive" & vbLf & vbLf Case 4: dr_msg = dr_msg & "CD-ROM drive" & vbLf & vbLf Case 5: dr_msg = dr_msg & "RAM disk" & vbLf & vbLf End Select Next 'メッセージボックスで取得したドライブ種類を表示する MsgBox dr_msg, vbInformation End Sub
実行したいこととしてはドライブの種類を調べて表示することですが、そのドライブを対象に処理を行う為にFile System Objectオブジェクト(ファイルやフォルダ、ドライブなどを操作できるオブジェクト)を使用します。
Set FSO = CreateObject(“Scripting.FileSystemObject”)
そのFile System Objectオブジェクトを使って全てのドライブを対象に処理を行っていきます。
For Each DriveObject In FSO.Drives
先ずはドライブレターの取得を行います。ドライブレターとはパソコンを扱っていると目にする「C:」「D:」などのドライブ区別用に設定された文字ですね。
dr_msg = dr_msg & DriveObject.DriveLetter & “: ”
次にドライブの種類に応じてメッセージを割り当てていきます。
オブジェクト.DriveType
このDriveTypeプロパティでドライブの種類を取得します。ここで返ってくる値はサンプルコード中に記載した通りです。
Select Case DriveObject.DriveType
Case 0: dr_msg = dr_msg & “Unknown” & vbLf & vbLf
Case 1: dr_msg = dr_msg & “Removable disk drive” & vbLf & vbLf
Case 2: dr_msg = dr_msg & “Hard disk drive” & vbLf & vbLf
Case 3: dr_msg = dr_msg & “Network drive” & vbLf & vbLf
Case 4: dr_msg = dr_msg & “CD-ROM drive” & vbLf & vbLf
Case 5: dr_msg = dr_msg & “RAM disk” & vbLf & vbLf
End Select
Next
ちなみにvbLf(改行を示す)を各行に2つ書いているのは、結果が出力された際に見難い気がした為です。vbLfが1つの場合の出力結果は以下になりますから、この辺りはお好みで良いと思います。
後は取得したドライブの種類を表示すればOKなのでメッセージボックスで表示させています。
MsgBox dr_msg, vbInformation
3.まとめ
今回の内容は使用頻度としては低いと思いますが、知っておくと今後役に立つ機会もあるのではないかと思います。
本サンプルは例としてDriveTypeプロパティで取得した戻り値をSelect Caseで判定させてメッセージ表示させていますが、この戻り値を有効活用することでVBAで処理する幅が広がりますね。
以上、全てのドライブ種類を調べて表示する方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo