【VBA】ドライブの存在確認をDriveExistsメソッドで行う
更新日:2024/01/18
ドライブがコンピュータに接続されているか存在確認をする場合、VBAではDriveExistsメソッドを使用します。
DriveExistsメソッドの構文
DriveExistsはFileSystemObjectオブジェクトのメソッドです。
確認したいドライブ文字を受け取って、真偽値を返します。
FileSystemObjectオブジェクト.DriveExists(DriveSpec As String) As Boolean
- DriveSpec:ドライブ文字
ドライブ文字は、次の3通りの文字列を指定できます。
- アルファベット一文字。例: "C"
- アルファベット一文字 + ":"。例: "C:"
- アルファベット一文字 + ":\"。例: "C:\"
大文字小文字はどちらも有効です。
存在しない場合False
DVD-ROMやCD-ROMなどの機器はドライブが存在していても、媒体の未セットなどで読み込み可能でない可能性があります。
このようなケースでも、DriveExistsはTrueを返します。
DriveExistsメソッドの使用例
次のコードは、CからFドライブまでのドライブが存在するか確認しています。
Sub driveExistsTest()
Dim fso As New Scripting.FileSystemObject
With fso
Debug.Print .DriveExists("c")
Debug.Print .DriveExists("d")
Debug.Print .DriveExists("e")
Debug.Print .DriveExists("f")
End With
End Sub
cドライブとDドライブがハードディスク、EドライブがDVD-ROMで、Fドライブが存在しないとき、次のような結果になります。
True
True
True
False
パスからドライブ存在確認
ファイル名等が含まれているパスでドライブの存在確認を行うときは、GetDriveName メソッドでパスからドライブ名を取得します。
そして、取得したドライブ名をDriveExistsメソッドに適用します。
Sub driveExistsTest2()
Dim fso As New Scripting.FileSystemObject
With fso
Debug.Print .DriveExists(.GetDriveName("c:\abc\def"))
End With
End Sub
ドライブが使用可能かどうかを確認
ドライブがDVD-ROM等の機器の場合、媒体の未セット等で存在していても操作できない可能性があります。
このようなケースでは、Driveオブジェクトを取得してIsReadyプロパティを確認します。
Sub isReadyTest()
Dim fso As New Scripting.FileSystemObject
Dim drv As drive
Const driveText = "e"
With fso
If Not .DriveExists(driveText) Then
Debug.Print "ドライブが存在しません"
Else
Set drv = .GetDrive(driveText)
If drv.IsReady Then
Debug.Print "使用可能です"
Else
Debug.Print "準備できていません"
End If
End If
End With
End Sub
更新日:2024/01/18
関連記事
スポンサーリンク
記事の内容について
こんにちはけーちゃんです。
説明するのって難しいですね。
「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。
裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。
掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。
ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php
このサイトは、リンクフリーです。大歓迎です。