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

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Ich möchte z.B. für ein Floppy-Laufwerk ermitteln, ob eine Diskette eingelegt ist und ob deren Schreibschutz entfernt wurde.

Lösung

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

Public Function IsDriveReady(Optional Drv = "A:")
Dim F As Integer
  F = FreeFile
  On Error Resume Next
  Open Drv & "\xxx.xxx" For Input As F
  IsDriveReady = (Err = 53 Or Err = 0)
  Close F
  On Error GoTo 0
End Function
 
Public Function IsDriveReadOnly(Optional Drv = "A:")
Dim F As Integer
  F = FreeFile
  On Error Resume Next
  Open Drv & "\xxx.xxx" For Output As F
  IsDriveReadOnly = (Err = 70 Or Err = 75)
  Close F
  Kill Drv & "\xxx.xxx"
  On Error GoTo 0
End Function

Aufruf

If Not IsDriveReady("A:") Then
  MsgBox "Bitte Diskette in Laufwerk A: einlegen!"
ElseIf IsDriveReadOnly("A:") Then
  MsgBox "Bitte Schreibschutz von Diskette in Laufwerk A: entfernen!"
End If