Der Zugriff auf ein Laufwerk, das nicht bereit ist (Diskette oder CD nicht eingelegt usw.), verursacht einen Laufzeitfehler. Fangen Sie diesen Fehler nicht ab und reagieren Sie in Ihrem Code nicht darauf, stürzt Ihre Anwendung ab. Nun gibt es leider keine Visual Basic-Anweisung, um die Bereitschaft eines Laufwerks festzustellen. Aber Sie können eben den Laufzeitfehler gezielt zum Testen verwenden:
Public Function DriveReady(Drive As String) As Boolean
Dim nTest As String
nTest = Left$(Drive, 1) & ":"
On Error Resume Next
Dir$ nTest
If Err.Number = 0 Then
DriveReady = True
End If
End Function
Die Funktion DriveReady gibt True zurück, wenn die darin verwendete Dir-Funktion, ohne einen Fehler auszulösen, Dateien im Wurzelverzeichnis eines Laufwerks finden konnte. Das funktioniert auch, wenn es sich um einen leeren Datenträger handelt. Sie können im Parameter Drive jeden beliebigen Laufwerks-, Pfad- oder Datei-Namen übergeben. Auch ein einzelner Laufwerks-Buchstabe reicht aus.
Eine andere Möglichkeit, die Bereitschaft eines Laufwerks zu testen, bietet das FileSystemObject aus der Microsoft Scripting Runtime-Bibliothek, die seit Visual Basic 6 zum Lieferumfang gehört. Sie brauchen lediglich einen Verweis auf diese Bibliothek in Ihr Projekt aufzunehmen, um das FileSystemObject verwenden zu können.
Es bietet einen objektorientierten Zugriff auf Laufwerke (und natürlich alle übrigen Objekte des Datei-Systems). Und ein Laufwerk-Objekt ("Drive") verfügt über die Eigenschaft IsReady, die Sie einfach abfragen können:
With New FileSystemObject
Debug.Print .GetDrive("a").IsReady
End With
Wie Sie sehen, brauchen Sie das Drive-Objekt nicht erst als Variable zu deklarieren, sondern können es gleich über die Methode GetDrive des FileSystemObjects abrufen.
|