Start Hilfe und Support Microsoft Office EXCEL 2010 VBA: Funktion, die prüft, ob eine Datei/ein Pfad existiert

EXCEL 2010 VBA: Funktion, die prüft, ob eine Datei/ein Pfad existiert

E-Mail PDF

Die Funktionen FileExist und PathExist prüfen, ob eine Datei/ein File oder ein Pfad/Ordner/Path, den man ansprechen möchte, überhaupt vorhanden ist

Aufgabenstellung

Spricht man im Programmablauf eine Datei oder einen Pfad an, der nicht vorhanden ist, kommt es zu einem unschönen Laufzeitfehler, der einen vollständigen Programmabbruch zur Folge hat. Das kann man vermeinden, indem man zuvor überprüft, ob die Datei oder der Pfad, mit dem man arbeiten möchte, überhaupt existiert.

Dazu dienen die beiden Funktionen FileExist und PathExist, die hier im Folgenden vorgestellt werden.

Anzumerken ist, dass, auch wenn man die Existenz einer Datei mit FileExist prüfen möchte, den vollständigen Pfad angibt (z.B.: "C:\MeinPfad\MeineDatei.dat"). Wird zuvor mit ChDir in den Pfad gewechselt, in dem sich die gesuchte Datei befindet, ist die vollständige Pfadangabe nicht notwendig (dann reicht als Übergabeparameter "MeineDatei.dat").

Funktionsweise

Beiden Funktionen sind als Übergabeparameter entweder der vollständige Deiname inkl. Pfad (FileExist) bzw. der Pfadname (PathExist) zu übergeben. Wird die Datei bzw. der Pfad gefunden, liefern die Funktionen ein True zurück, ansonsten wird ein False geliefert. So kann die Funktion leicht in z.B. if..Then..Else-Konstrukte aufgenommen werden.

VBA-Code FileExist

Function FileExist(ByVal vDateiname As String) As Boolean

  Dim lKanal As Long ' In VBA werden Dateien über eine Dateinummer angesprochen,
                     ' diese Nummer wird in der Variablen lKanal vorgehalten.

  ' Hier wird dem Interpreter von VBA gesagt, wie er sich im Falle eines Fehlers verhalten soll.
  ' Wenn ein Fehler auftritt, soll er zu der Ansprungmarke ErrorFileExist springen, aber
  ' keinen Laufzeitfehler/Runtimeerror ausgeben und nicht den Programmablauf abbrechen.
  On Error GoTo ErrorFileExist


  lKanal = FreeFile ' Hier wird eine freie Dateinummer vom System abgerufen und der Variablen
                    ' lKanal zugewiesen.

  ' Nun wird versucht, die übergebene Datei zu öffnen.
  ' Träte ein Fehler auf, würde er von hier aus direkt zur Ansprungmarke ErrorFileExist springen.
  Open vDateiname For Input As #lKanal


  ' Wenn die Datei existiert, dann müssen wir diese Datei der Ordnung halber wieder schließen.
  Close #lKanal


  FileExist = True ' Die Datei existiert, sonst wäre der Interpreter nicht bis hier hin gekommen.
                   ' Als Rückgabewert wird also an die Funktion True übergeben.


  On Error GoTo 0 ' Hier wird das Unterlassen der Fehlerbehandlung durch VBA wieder ausgeschaltet.
                  ' Wird in der Folge ein Laufzeitfehler identifiziert, wird das Programm wieder
                  ' mit einer entsprechenden Fehlermeldung unterbrochen.


  Exit Function ' Alles ist erledigt und die Funktion kann verlassen werden. Der Nachfolgende Programm-
                ' code wird nicht ausgeführt.


ErrorFileExist: ' Hier kommt der Interpreter von VBA nur vorbei, wenn wirklich ein Fehler aufgetreten ist,
                ' in unserem Fall konnte die Datei, die man als Parameter mit übergeben hat, nicht geöffnet
                ' werden, und das liegt höchstwahrscheinlich daran, dass sie nicht existiert.


  FileExist = False  ' Der Funktionsrückgabewert wird auf False gesetzt, die Datei ist also nicht existent.

  On Error GoTo 0 ' Hier wird das Unterlassen der Fehlerbehandlung durch VBA wieder ausgeschaltet.
                  ' Wird in der Folge ein Laufzeitfehler identifiziert, wird das Programm wieder
                  ' mit einer entsprechenden Fehlermeldung unterbrochen.

End Function

VBA-Code PathExist

Function PathExist(ByVal vPfadName As String) As Boolean

  ' Hier wird dem Interpreter von VBA gesagt, wie er sich im Falle eines Fehlers verhalten soll.
  ' Wenn ein Fehler auftritt, soll er zu der Ansprungmarke ErrorPathExist springen, aber
  ' keinen Laufzeitfehler/Runtimeerror ausgeben und nicht den Programmablauf abbrechen.
  On Error GoTo ErrorPathExist


  ' Hier ist die Sollbruchstelle in der Funktion. Wenn das Wechseln in den Pfad klappt, dann
  ' existiert der Pfad, wenn nicht, dann tritt ein Fehler auf und VBA reagiert wie befohlen,
  ' es macht im Programmablauf bei der Ansprungmarke ErrorPathExist weiter.
  ChDir (vPfadName)


  PathExist = True ' Die Pfad existiert, sonst wäre der Interpreter nicht bis hier hin gekommen.
                   ' Als Rückgabewert wird also an die Funktion True übergeben.

  On Error GoTo 0 ' Hier wird das Unterlassen der Fehlerbehandlung durch VBA wieder ausgeschaltet.
                  ' Wird in der Folge ein Laufzeitfehler identifiziert, wird das Programm wieder
                  ' mit einer entsprechenden Fehlermeldung unterbrochen.

  Exit Function ' Alles ist erledigt und die Funktion kann verlassen werden. Der Nachfolgende Programm-
                ' code wird nicht ausgeführt.

ErrorPathExist: ' Hier kommt der Interpreter von VBA nur vorbei, wenn wirklich ein Fehler aufgetreten ist,
                ' in unserem Fall konnte der Pfad/der Ordner, die man als Parameter mit übergeben hat, nicht gefunden
                ' werden, und das liegt höchstwahrscheinlich daran, dass er nicht existiert.

  PathExist = False ' Der Funktionsrückgabewert wird auf False gesetzt, der Pfad/der Ordner ist also nicht existent.

  On Error GoTo 0 ' Hier wird das Unterlassen der Fehlerbehandlung durch VBA wieder ausgeschaltet.
                  ' Wird in der Folge ein Laufzeitfehler identifiziert, wird das Programm wieder
                  ' mit einer entsprechenden Fehlermeldung unterbrochen.

End Function


Zuletzt aktualisiert am Montag, den 04. November 2013 um 18:37 Uhr  


Machen Sie mit

Auf dieser Seite sollen die Termine in Happerschoß bekannt gemacht werden. Haben Sie einen Termin, der Ihnen wichtig ist und auf dieser Seite fehlt (schauen Sie nach unter Termine)?. Dann melden Sie sich bitte und teilen den Termin mit. Wichtig dabe ist eine Beschreibung des Anlasses, Beginn und Ende des Termins (Datum und Uhrzeit), der Ort, wo der Termin stattfindet und wer den Termin veranstaltet. Melden Sie diese Termin-Informationen über den Kontaktbereich oder natürlich auch über Info@happerschoss.net.