Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dateiname auslesen bzw. anzeigen

Forumthread: Dateiname auslesen bzw. anzeigen

Dateiname auslesen bzw. anzeigen
02.03.2016 12:09:19
Stephan
Hallo
in meiner Excel Tabelle lese ich mir externe Daten ein
über Daten, aus Text und dann die entsprechende Textdatei auswählen,
klappt auch wunderbar,
es sind viele Textdatei und viele Abfragen am Tag,
ich kann nicht erkennen welche Textdatei ich gerade eingelesen habe,
kann man den Dateinamen der abgerufenen Textdatei auch auslesen bzw. anzeigen?
eventuell auch über Makro,
ich habe schon viel recherchiert aber diese Ergebnisse haben dann immer nur den Namen meiner Excel Tabelle angezeigt,
wie diese heißt weiß ich,
aber nicht den der Textdatei,
könnte da jemand mir weiter helfen?
Danke
BG

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateiname auslesen bzw. anzeigen
02.03.2016 12:40:52
Steve
Hallo Stephan,
dies wäre beispielhaft ein Code zum Importieren. Dabei wird die gewählte Datei in der Variable "myFileAddress " gespeichert und du kannst dir das in eine Zelle schreiben, oder vergleichbares.
Sub Dateiimport()
Dim myFileAddress As Variant
Application.ScreenUpdating = False
Application.Calculation = xlManual
Const StandardVerzeichnis = "C:\"
' Standard-Verzeichnis festlegen
ChDrive Left(StandardVerzeichnis, 1)
ChDir StandardVerzeichnis
' Dateiimport
myFileAddress = Application.GetOpenFilename("Log-Dateien (*.log), *.log")
If myFileAddress = False Then GoTo Finish
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & myFileAddress, Destination:=Range("A2"))
.Name = myFileAddress
'…  Optionen am besten über Makro-Rekorder und manuelles Importieren ermitteln und einfü _
gen (auf deine Datei anpassen)
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 852
.TextFileStartRow = 2
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 2, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
.Delete 'Query im Namensmanager und unter Verbindungen wieder entfernen
End With
Range("A1") = CStr(myFileAddress) 'Dateinamen merken
Finish:
Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
End Sub
lg Steve

Anzeige
AW: Dateiname auslesen bzw. anzeigen
02.03.2016 14:21:20
Stephan
Hallo Steve
leider bin ich mit VBA nicht so vertraut,
ich habe deinen Code mit einigen Daten aktualisiert Code erweitert,
mein Makro in fett und kirsuv eingefügt,
wenn ich die neue Textdatei einfügen muß diese immer in G1 beginnen
der Name der Textdatei kann auch in z.Bsp. A25 stehen
mit A25 funktioniert bei dir auch super,
aber der Rest irgendwie nicht
Danke
Sub Dateiimport()
Dim myFileAddress As Variant
Application.ScreenUpdating = False
Application.Calculation = xlManual
Const StandardVerzeichnis = "angepasst\"
' Standard-Verzeichnis festlegen
ChDrive Left(StandardVerzeichnis, 1)
ChDir StandardVerzeichnis
' Dateiimport
myFileAddress = Application.GetOpenFilename("Text-Dateien (*.txt), *.txt")
If myFileAddress = False Then GoTo Finish
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & myFileAddress, Destination:=Range(" _
G1")
.Name = myFileAddress
 ActiveSheet.Unprotect
ActiveWorkbook.RefreshAll
Range("R3:R249").Select
Selection.ClearContents
Range("R3").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
'…  Optionen am besten über Makro-Rekorder und manuelles Importieren ermitteln und einfü _
_
gen (auf deine Datei anpassen)
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 852
.TextFileStartRow = 2
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 2, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
.Delete 'Query im Namensmanager und unter Verbindungen wieder entfernen
End With
Range("A1") = CStr(myFileAddress) 'Dateinamen merken
Finish:
Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
End Sub

Anzeige
AW: Dateiname auslesen bzw. anzeigen
02.03.2016 15:19:54
Steve
Hallo Stephan,
ich habe deinen Code mal an die richtigen Stellen verschoben. Du hast im Prinzip nur den Blattschutz aufgehoben und den Bereich gesäubert, das muss nach der Auswahl der Datei, aber vor dem Import erfolgen. Den Blattschutz wieder zu aktivieren darf natürlich erst hinterher geschehen:
Sub Dateiimport()
Dim myFileAddress As Variant
Application.ScreenUpdating = False
Application.Calculation = xlManual
Const StandardVerzeichnis = "angepasst\"
' Standard-Verzeichnis festlegen
ChDrive Left(StandardVerzeichnis, 1)
ChDir StandardVerzeichnis
' Dateiimport
myFileAddress = Application.GetOpenFilename("Text-Dateien (*.txt), *.txt")
If myFileAddress = False Then GoTo Finish
'Blattschutz aufheben, Bereich säubern
ActiveSheet.Unprotect
Range("R3:R249").ClearContents
ActiveWorkbook.RefreshAll
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & myFileAddress, Destination:=Range("G1"))
.Name = myFileAddress
'…  Optionen am besten über Makro-Rekorder und manuelles Importieren ermitteln
'und einfügen (auf deine Datei anpassen)
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 852
.TextFileStartRow = 2
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 2, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
.Delete 'Query im Namensmanager und unter Verbindungen wieder entfernen
End With
Range("A25") = CStr(myFileAddress) 'Dateinamen merken
'Blattschutz setzen
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Finish:
Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
End Sub
lg Steve

Anzeige
AW: Dateiname auslesen bzw. anzeigen
03.03.2016 08:43:40
Stephan
Hallo Steve
Danke, klappt sehr gut, mit dem Blattschutz hätte ich aber selber dran denken können,
noch eine Frage,
der Dateiname wird mir in voller Länge angezeigt, d.h. der komplette Pfad E:\.......\.txt
lässt sich nur der Name anzeigen?
meine Text Dateien können so aussehen
# 01-01-01-0001
# Z01 001 01 00 1
# 01-01-01-0002_EK-B
ich habe da eine Formel um mir die Zahlen in der Zelle A25 auszulesen,
# {=TEIL(LINKS(A25;MAX(ISTZAHL(TEIL(A25;SPALTE(1:1);1)*1)*SPALTE(1:1)));VERGLEICH(1;ISTZAHL(TEIL(A25&0;SPALTE(1:1);1)*1)*1;0);LÄNGE(A25))}
da erscheinen aber nur die Zahle und nicht wenn nötig auch das "Z oder _E-KB"
und das wäre ebene wichtig
und daher die Frage wegen nur dem Namen ohne Pfad
Danke
BG

Anzeige
AW: Dateiname auslesen bzw. anzeigen
03.03.2016 09:05:33
Steve
Hallo Stephan,
da du nur Txt-Dateien zur Auswahl zugelassen hast kann man sich das einfach machen:
Range("A25") = Left(myFileAddress, InStrRev(myFileAddress, ".txt") - 1)
lg Steve

AW: Dateiname auslesen bzw. anzeigen
03.03.2016 09:16:18
Stephan
Hallo Steve
habe deinen veränderten Code eingefügt
aber leider keine Veränderung,
immer noch der ganz Pfad
BG
Stephan

Anzeige
AW: Dateiname auslesen bzw. anzeigen
03.03.2016 09:25:16
Steve
Ups,
entschuldige, da war ich zu blöd zwei Zeilen zu kopieren:
myFileAddress = Dir(myFileAddress)
Range("A25") = Left(myFileAddress, InStrRev(myFileAddress, ".txt") - 1)
lg Steve

AW: Dateiname auslesen bzw. anzeigen
03.03.2016 09:37:05
Stephan
Hi
super perfekt Danke,
genau was ich gesucht habe,
noch mal Danke schön
BG Stephan
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Dateinamen in Excel mit VBA auslesen und anzeigen


Schritt-für-Schritt-Anleitung

Um den Dateinamen einer importierten Textdatei in Excel auszulesen und anzuzeigen, kannst Du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei)“ und wähle „Einfügen“ > „Modul“.

  3. Kopiere den folgenden Code in das Modul:

    Sub Dateiimport()
       Dim myFileAddress As Variant
       Application.ScreenUpdating = False
       Application.Calculation = xlManual
       Const StandardVerzeichnis = "C:\"
       ChDrive Left(StandardVerzeichnis, 1)
       ChDir StandardVerzeichnis
    
       ' Dateiimport
       myFileAddress = Application.GetOpenFilename("Text-Dateien (*.txt), *.txt")
       If myFileAddress = False Then GoTo Finish
    
       ' Daten importieren
       With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & myFileAddress, Destination:=Range("G1"))
           .FieldNames = True
           .Refresh BackgroundQuery:=False
           .Delete
       End With
    
       ' Dateinamen in A25 speichern
       Range("A25") = Dir(myFileAddress) ' nur den Dateinamen ohne Pfad
    
    Finish:
       Application.ScreenUpdating = True
       Application.Calculation = xlAutomatic
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Starte das Makro: Drücke ALT + F8, wähle „Dateiimport“ und klicke auf „Ausführen“.

Der Name der ausgewählten Textdatei wird in die Zelle A25 geschrieben.


Häufige Fehler und Lösungen

  • Fehler: „Der ausgewählte Dateityp wird nicht unterstützt.“

    • Lösung: Stelle sicher, dass Du die Datei im richtigen Format (Textdatei) auswählst.
  • Fehler: Der Dateiname wird nicht angezeigt.

    • Lösung: Überprüfe, ob Du Dir(myFileAddress) korrekt verwendet hast, um nur den Dateinamen zu extrahieren.

Alternative Methoden

Wenn Du den Dateinamen ohne VBA auslesen möchtest, kannst Du auch eine Formel verwenden. Diese Methode ist jedoch weniger flexibel.

  1. Verwende die Funktion RECHTS und FINDEN:

    =RECHTS(A1;LÄNGE(A1)-FINDEN("~";WECHSELN(A1;"\";
    "~";LÄNGE(A1)-LÄNGE(WECHSELN(A1;"\";""))))-1)

    Diese Formel nimmt an, dass der vollständige Dateipfad in Zelle A1 steht.


Praktische Beispiele

  • Wenn Du den Code so anpasst, dass der Pfad zu einer Textdatei in der Zelle A1 steht, kannst Du den Import und die Anzeige des Dateinamens damit kombinieren.
  • Beispiel für die Verwendung des Codes:

    Range("A1") = "E:\DeinOrdner\beispiel.txt"

    Stelle sicher, dass Du nur den Dateinamen ohne Pfad in A25 anzeigst.


Tipps für Profis

  • Wenn Du regelmäßig mit verschiedenen Dateitypen arbeitest, erwäge, den Code so anzupassen, dass mehrere Dateiformate akzeptiert werden.

  • Du kannst die Funktion MsgBox verwenden, um den ausgelesenen Dateinamen direkt anzuzeigen:

    MsgBox "Die importierte Datei ist: " & Dir(myFileAddress)
  • Verwende den VBA-Debugger, um zu überprüfen, ob die Variablen korrekt gesetzt sind, und um Fehler zu beheben.


FAQ: Häufige Fragen

1. Wie kann ich den Dateinamen in einer anderen Zelle anzeigen? Du kannst die Zeile Range("A25") = Dir(myFileAddress) anpassen, um den Dateinamen in einer anderen Zelle anzuzeigen, z.B. Range("B1").

2. Was mache ich, wenn ich mehrere Dateien importieren möchte? Du kannst eine Schleife verwenden, um mehrere Dateien nacheinander zu importieren und die Dateinamen in einer Liste anzuzeigen.

3. Wie kann ich den Pfad der Datei ausblenden? Verwende die Funktion Dir wie im Beispiel, um nur den Dateinamen ohne Pfad zu extrahieren.

4. Was ist, wenn ich eine andere Excel-Version benutze? Der Code sollte in den meisten modernen Excel-Versionen funktionieren. Achte darauf, dass die Makros in Deiner Excel-Version aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige