Tipps und Tricks 4/2013

In dieser Reihe unserer Tipps und Tricks rund um Access und VBA erfahren Sie, wie Sie mit einer einfachen VBA-Funktion blitzschnell Verzeichnisse erstellen. Außerdem lernen Sie eine kleine VBA-Prozedur kennen, mit der Sie Texte mithilfe von Google von Deutsch nach Englisch übersetzen können. Haben Sie auch noch einen coolen Tipp für uns Immer her damit – einfach an info@access-im-unternehmen.de.

Verzeichnisse erstellen

Mal eben schnell per VBA ein Verzeichnis erstellen Kein Problem: Sofern nur eine Verzeichnisebene zu erstellen ist und die darunter liegenden Ebenen bereits vorhanden sind, brauchen Sie dazu nur den MkDir-Befehl mit entsprechenden Parametern abzusetzen.

Wenn es jedoch mehrere Verzeichnis-ebenen sein sollen und Sie noch nicht einmal wissen, ob eine oder mehrere Ebenen bereits existieren, kommt die Funktion aus Listing 1 genau richtig. Voraussetzung ist, dass es sich um ein Verzeichnis mit Angabe des Laufwerkbuchstabens handelt, also etwa c:\Test.

Public Function CreateDir(strDir) As Boolean
     Dim strDirTemp As String
     Dim intPosStart As Integer
     intPosStart = InStr(4, strDir, "\")
     If Not Right(Trim(strDir), 1) = "\" Then
         strDir = strDir & "\"
     End If
     Do While Not intPosStart = 0
         On Error Resume Next
         MkDir Mid(strDir, 1, intPosStart)
         On Error GoTo 0
         intPosStart = InStr(intPosStart + 1, strDir, "\")
     Loop
     CreateDir = Len(Dir(strDir, vbDirectory)) > 0
End Function

Listing 1: Erstellen eines Verzeichnisses per VBA-Funktion

Die Funktion rufen Sie beispielsweise mit dem folgenden Befehl auf, wobei Sie das Ergebnis sowohl im Direktbereich ausgeben (wie in diesem Fall) oder auch im Code weiterverarbeiten können:

  CreateDir ("c:\test1\test2\test3")
Wahr

Die Funktion ermittelt den Beginn der eigentlichen Verzeichnisse und speichert die Position des ersten Backslash in der Integer-Variablen intPosStart. Außerdem prüft sie, ob der angegebene Ausdruck mit einem Backslash endet.

Dies ist nötig, damit auch das hinterste Verzeichnis angelegt wird. Sollte der Backslash fehlen, ergänzt die Funktion diesen noch.

Nach den Vorbereitungsarbeiten durchläuft die Funktion so lange eine Do While-Schleife, bis die Variable intPosStart den Wert 0 enthält. Die Prozedur legt nun mit der MkDir-Methode das Verzeichnis an, das dem Inhalt von strDir bis zu der in intPosStart gespeicherten Position entspricht – im ersten Durchlauf also etwa c:\test1\. Sollte das Verzeichnis bereits vorhanden sein, führt dies zu einem Fehler – was aber nicht weiter schlimm ist, denn wir haben die Fehlerbehandlung mit der On Error Resume Next-Anweisung während der Ausführung von MkDir deaktiviert. Ist das Verzeichnis noch nicht vorhanden, legt die Funktion dieses an.

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

TestzugangOder bist Du bereits Abonnent? Dann logge Dich gleich hier ein. Die Zugangsdaten findest Du entweder in der aktuellen Print-Ausgabe auf Seite U2 oder beim Online-Abo in der E-Mail, die Du als Abonnent regelmäßig erhältst:

Schreibe einen Kommentar