VBA Tipp: Feststellen, ob ein Laufwerk bereit/beschreibbar ist

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Es soll für ein Laufwerk ermittelt werden,

  • ob ein Datenträger eingelegt / angeschlossen / angesteckt ist, oder
  • ob der Datenträger schreibgeschützt ist (bzw. dessen Schreibschutz entfernt wurde).

Als Standardwert ist das Laufwerk "A:\" vorgegeben.

Lösung

Die folgenden Funktionen testen den Laufwerkszustand durch einen Lese- bzw. Schreibversuch auf das Laufwerk.

Public Function IsDriveReady(Optional Drive As String = "A:")
 
   'Quelle: www.dbwiki.net oder www.dbwiki.de
 
   Dim fNum As Integer
 
   fNum = FreeFile()
   On Error Resume Next
   Open Drive & "\xxx.xxx" For Input As fNum
   IsDriveReady = (Err = 53 Or Err = 0)
   Close fNum
 
End Function
 
 
Public Function IsDriveReadOnly(Optional Drive As String = "A:")
 
   'Quelle: www.dbwiki.net oder www.dbwiki.de
 
   Dim fNum As Integer
 
   fNum = FreeFile()
   On Error Resume Next
   Open Drive & "\xxx.xxx" For Output As fNum
   IsDriveReadOnly = (Err = 70 Or Err = 75)
   Close fNum
   Kill Drive & "\xxx.xxx"
 
End Function

Aufruf

   'Beispiel 1: Disketten-Laufwerk A:
   If Not IsDriveReady Then
      MsgBox "Bitte Diskette in Laufwerk A: einlegen!"
   ElseIf IsDriveReadOnly Then
      MsgBox "Bitte Schreibschutz von Diskette in Laufwerk A: entfernen!"
   End If
 
   'Beispiel 2: CD/DVD-Laufwerk E:
   If Not IsDriveReady("E:") Then
      MsgBox "Bitte CD/DVD in Laufwerk E: einlegen!", vbExclamation
   End If
 
   'Beispiel 3: Externe Festplatte, eingerichtet als Laufwerk B:
   If Not IsDriveReady("B:") Then
      MsgBox "Bitte externe Festplatte anstecken!", vbExclamation
   End If