ファイル操作

【VBA】ドライブの存在確認をDriveExistsメソッドで行う

更新日:2024/01/18

ドライブがコンピュータに接続されているか存在確認をする場合、VBAではDriveExistsメソッドを使用します。

 

DriveExistsメソッドの構文

DriveExistsはFileSystemObjectオブジェクトのメソッドです。
確認したいドライブ文字を受け取って、真偽値を返します。

FileSystemObjectオブジェクト.DriveExists(DriveSpec As String) As Boolean
  1. DriveSpec:ドライブ文字

ドライブ文字は、次の3通りの文字列を指定できます。

  • アルファベット一文字。例: "C"
  • アルファベット一文字 + ":"。例: "C:"
  • アルファベット一文字 + ":\"。例: "C:\"

大文字小文字はどちらも有効です。

ドライブが存在する場合True。
存在しない場合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

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。