Dateiname als String (VBA Excel)

Hallo,

seit ein paar Tagen programmiere ich mit VBA unter Excel und stoße dabei auf folgendes für mich zurzeit unüberwindliches Problem:

Ich möchte in Excel gerne eine Textdatei importieren. Die zu importierende Datei wähle ich mit folgendem Befehl aus:

ZuImportierendeDatei = Application.GetOpenFilename \_
 ("ASCII-Dateien (\*.asc),\*.asc,Textdateien (\*.txt),\*.txt")
 If ZuImportierendeDatei = False Then Exit Sub

Der Variablen

ZuImportierendeDatei

wird zum Beispiel folgender String zugewiesen

D:\Test\Messung1.asc

Jetzt möchte ich aber gerne nur den reinen Dateinamen - sprich "Messung1.asc - in meiner Variablen

ZuImportierendeDatei

haben, damit ich unter Excel einen Sheet mit dieser Variablen benennen kann.

Vielleicht weiß jemand Rat.

Gruß,

Pere

Hallo,

Datei=Right$(ZuImportierendeDatei, InStrRev(zuImportierendeDatei, "\")

„InStrRev“ funktioniert ganauso wie „Instr“, jedoch beginnt es hinten. Der Wert, den „InStrRev“ zurückgibt, liefert die Position und Right$() muß ich Dir wohl nicht erklären.

Gruß

Gollum

Hallo Gollum,

vielen Dank für Deinen Tipp. Leider tauscht beim Ausführen etwas sehr Merkwürdiges auf. Meine zu importierende Datei heißt:

D:\Test\Wasserstoff 4% - 1 Messung.asc

Führe ich Deinen Code wie folgt aus

Datei=Right$(ZuImportierendeDatei, InStrRev(zuImportierendeDatei, "\"))
MsgBox (Datei)

so wird mir in der MsgBox folgender String angezeigt:

sung.asc

Die Funktion InStrRev(zuImportierendeDatei, „“) liefert mir die Zahl 8.

Aber warum? Warum hört die Funktion ausgerechnet nach 8 Zeichen auf?

Gruß,

Pere

ups
Hallo Pere!

Sorry, das war mein Fehler, ich habe mit einem String getestet, wo es einwandfrei funktionierte, weil zufälligerweise beide Teile gleich groß waren. InstrRev liefert Dir die Zahl links davon.

Datei = Right$(zuimportierendedatei, Len(zuimportierendedatei) - InStrRev(zuimportierendedatei, "\"))
MsgBox (Datei)

Sorry, ist in der Eile des Gefechts untergegangen.

Gruß

Gollum

1 Like

Danke schön !
Hallo Gollum,

erst einmal möchte ich Dir sagen, dass Du Dich für nichts zu entschuldigen hast. Dein erster Tipp hat mir gezeigt, wie ich an so eine Aufgabe rangehen muss und Dein korrigierter Tipp stellte eben die Lösung der Aufgabe dar.

Schwierigkeiten bereitet mir noch, wie ich selbstständig solche Funktionen finden kann. Aber ich denke, dass es mit der Zeit und der nötigen Übung schon irgendwie transparenter wird.

Nochmals vielen Dank für Deine sehr kompetente Hilfe, welche selbstverständlich mit einem Punkt belohnt wurde.

Gruß,

Pere