Excel VBA – Pfad und Dateinamen mit Funktionen InStrRev, Left und Mid trennen
Dieser Beitrag ist ein Teil der VBA Grundlagen Serie.
In diesem Beitrag zeige ich am Beispiel eines Dateipfades weitere Funktionen für Zeichenketten (Strings). In diesem Beispiel wollen wir den Dateipfad in den Dateinamen und den Pfad zerlegen.
Gehen Sie zunächst mit
ALT+F11
in die Entwicklungsumgebung und fügen Sie ein neues Modul ein. Als nächstes definieren wir die benötigten Variablen.
Sub StringZerlegen() Dim intPos As Integer Dim strPfad As String Dim strDatei As String End Sub
Nun ermitteln wir mit der Funktion InStrRev
das erste Backslash \
im kompletten Dateipfad ActiveWorkbook.FullName
vom Ende gesehen.
Sub StringZerlegen() Dim intPos As Integer Dim strPfad As String Dim strDatei As String intPos = InStrRev(ActiveWorkbook.FullName, "\") End Sub
Die Zeichenkette rechts von dieser Position ist der Dateiname und die Zeichenkette links davon entspricht dem Pfad.
Fangen wir mit dem Pfad an. Diesen können wir mit der Funktion Left
ermitteln. Diese gibt die Zeichenkette zurück, die eine bestimmte Anzahl von Zeichen ab dem ersten (linken) Zeichen einer Zeichenfolge enthält. Wir schreiben also die gesamte Zeichenkette links von der Position des Backslashes in die Variable strPfad
.
Sub StringZerlegen() Dim intPos As Integer Dim strPfad As String Dim strDatei As String intPos = InStrRev(ActiveWorkbook.FullName, "\") strPfad = Left(ActiveWorkbook.FullName, intPos) End Sub
111 VBA Makros die Ihr Leben leichter machen
Wollen Sie Ihre langweiligen Routineaufgaben loswerden? Möchten Sie Excel an Ihre Bedürfnisse anpassen, Berechnungen automatisieren, eigene Dialogfelder erstellen und vieles mehr? Dieses Buch zeigt Ihnen, wie Sie Ihre Aufgaben schnell und einfach mit VBA erledigen.
Die Funktion Right
funktioniert analog. Daher können wir diese hier nicht nutzen. Um den Dateinamen zu bekommen greifen wir auf die Funktion Mid
zurück. Damit geben wir die gesamte Zeichenkette ab einer bestimmten Position aus. Da das Backslash nicht zum Dateinamen gehört, erhöhen wir die Variable intPos
um 1.
Anschließend geben wir das Ergebnis mit Debug.Print
im Direktbereich aus.
Sub StringZerlegen() Dim intPos As Integer Dim strPfad As String Dim strDatei As String intPos = InStrRev(ActiveWorkbook.FullName, "\") strPfad = Left(ActiveWorkbook.FullName, intPos) strDatei = Mid(ActiveWorkbook.FullName, intPos + 1) Debug.Print strPfad Debug.Print strDatei End Sub
Die Beispiel Excel Datei mit dem sofort einsetzbaren Makro und 111+ andere Makros, die Ihr Leben leichter machen, finden Sie hier.
Beeindrucke deinen Chef mit coolen Excel Tricks!
- Lasse dich von deinen Kollegen nicht abhängen!
- Spare Zeit und nutze diese für angenehmere Dinge
- Steigere deine Produktivität und Effizienz
- Es ist leicht - In meinem Newsletter gebe ich Schritt für Schritt Anleitungen die jeder versteht
- Bei der Anmeldung zu meinem Newsletter erhälst du das Buch „Excel Tricks die deinen Chef beeindrucken“ als Willkommensgeschenk.
Quellen und weiterführende Literatur:
Bernd Held – VBA mit Excel: Das umfassende Handbuch
Falls Ihnen dieser Beitrag weitergeholfen hat, wäre es eine sehr nette Anerkennung meiner Arbeit wenn Sie z.B. Ihre Bücher über Amazon bestellen würden. Wenn Sie ein Produkt kaufen, erhalte ich dafür eine Provision. Für Sie ändert sich am Preis des Produktes gar nichts. Ich möchte mich an dieser Stelle jetzt schon für Ihre Unterstützung bedanken.
Ich habe ein ähnliches Problem, allerdings genau anders herum. Ich möchte in einem Makro von excel aus dem Wert einer Zufallsvariablen eine dazu passende Datei aufrufen (es geht um einen Vokabeltrainer). Wenn meine Variable z. B. den Wert 25 ausgibt, soll die Datei „25.wav“ aus einem konkreten Ordner ausgewählt werden, die eine konkrete Vokabel zum Hören bringt. Geht das?
Hat mir sehr geholfen, einfach und verständlich erklärt…