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

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Es soll für ein Laufwerk ermittelt werden,

  1. ob ein Datenträger eingelegt, angeschlossen oder angesteckt ist
  2. 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: http://www.dbwiki.net/
 
   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: http://www.dbwiki.net/
 
   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