「2013 vba ドライブの存在チェック」
「access vba ドライブが存在するか dir」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。
ドライブが存在するかどうかを確認するVBA(Visual Basic for Applications)のコード・マクロを探している方による検索です。
Dir関数ではドライブの存在確認はできない
「access vba ドライブが存在するか dir」
という検索をした方は、VBAのDir関数を使った、
以下のようなマクロを想定していたのでしょう。
Sub Sample()
Dim msg As String
If Dir("D:", vbDirectory) = "" Then
msg = "存在しません。"
Else
msg = "存在します。"
End If
MsgBox msg
End Sub
Dir関数は、第1引数に指定されたパスで見つかったファイル名を返してきます。
Dir関数の第1引数に「D:\」や「D:」を指定することで、Dドライブが存在するかどうかを調べられそうに感じる方もいらっしゃることでしょう。
Dドライブに何らかのファイルやフォルダが存在していれば、上記のマクロでもOKなのですが、Dドライブにファイルが存在していないときには、ダメです。
Dドライブは存在しているけれど、ファイルやフォルダが存在していない場合、上記のマクロでは「存在しません。」と判定されてしまいます。
ドライブの存在確認を行うサンプルマクロ
ドライブの存在確認をVBAで行うには、FileSystemObjectを使うのが便利です。With CreateObject("Scripting.FileSystemObject")
If .DriveExists("D:") Then
MsgBox "Dドライブが存在します。"
Else
MsgBox "Dドライブはありません。"
End If
End With
End Sub
FileSystemObjectオブジェクトには、ドライブが存在するかをチェックするDriveExistsメソッドが存在します。
FileSystemObject.DriveExistsメソッドは、指定されたドライブの存在をチェックして、TrueかFalseを返しますから、これを利用して作ったのが上記のマクロです。
最近のWindowsで、VBAが使える環境なら、上記のマクロはExcelでもWordでもPowerPointでも使えます。
最終更新日時:2019-01-10 11:48
Home » FSO・FileSystemObjectの使い方 » ドライブの存在を確認する-FileSystemObject.DriveExists