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

Forumthread: Dateiname auslesen und in Zelle schreiben

Dateiname auslesen und in Zelle schreiben
20.11.2016 14:53:15
Tyroler
Hallo Zusammen,
ich möchte gerne eine individuelle Datei öffenen.
Dessen Name würde ich gerne auslesen und dann in eine Zelle schreiben, damit wann immer weiss basierend auf welcher Datei die Auswertung gemacht wird.
wie kann man das via VBA realisieren?
Vielen Dank für eure Hilfe
Dankeschön
Grüßé
Tyroler
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateiname auslesen und in Zelle schreiben
20.11.2016 15:03:17
Martin
Hallo Tyroler,
deine Anfrage ist aber sehr ungenau geschrieben.
Zum Auslesen das Dateinamens gibt es folgende Möglichkeiten:
ActiveWorkbook.Name 'liefert nur den Dateinamen
ActiveWorkbook.FullName 'liefert den Dateinamen mit der Verzeichnisangabe
Bitte beachte, dass du den Rückgabewert in "thisworkbook.Sheets(z).cells(x,y)" abgelegen musst.
Viele Grüße
Martin
Anzeige
AW: Dateiname auslesen und in Zelle schreiben
20.11.2016 15:17:01
Tyroler
vielen DAnk schon mal für die Hilfe!
ich öffnen mit folgendem Code eine beliebige Datei:
MsgBox "Bitte aktuelle Auswertung Auswählen"
Dim Erfolg1 As Boolean
Erfolg1 = Application.Dialogs(xlDialogOpen).Show(arg1:=".xlsx")
If Not Erfolg1 Then
MsgBox "keine DAtei ausgewählt"
Else
Cells.Copy Workbooks("test.xlsm").Sheets("SBM").Range("A1")
ActiveWorkbook.Close False
End If
Ich öffne das File nur um die Daten in mein Hauptfile Test.xlsm zu kopieren.
Die beliebigen Datei haben immer das Format xxx_ddmmyyyy.xlsx.
Damit ich weiß, welche Daten gerade im Hauptfile kopiert sind wüde ich gerne den Dateiname von der beliebigen Datei in Zelle "E4" stehen haben.
VIelen Dank
Tyroler
Anzeige
AW: Dateiname auslesen und in Zelle schreiben
20.11.2016 16:41:01
Martin
Hallo Tyroler,
wenn ich dich richtig verstanden habe, dann sollte es so gehen:
    Dim Erfolg1 As Boolean
MsgBox "Bitte aktuelle Auswertung Auswählen"
Erfolg1 = Application.Dialogs(xlDialogOpen).Show(arg1:=".xlsx")
If Not Erfolg1 Then
MsgBox "keine DAtei ausgewählt"
Else
With ThisWorkbook.Sheets("SBM")
Cells.Copy .Range("A1")
.Range("E4") = ActiveWorkbook.Name
End With
ActiveWorkbook.Close False
End If
Viele Grüße
Martin
Anzeige
AW: Dateiname auslesen und in Zelle schreiben
20.11.2016 17:27:30
Tyroler
Vielen Vielen Dank!!!
Funktioniert perfekt :)

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Dateinamen in Excel auslesen und in Zelle einfügen


Schritt-für-Schritt-Anleitung

Um den Dateinamen einer geöffneten Excel-Datei auszulesen und in eine Zelle zu schreiben, kannst Du den folgenden VBA-Code verwenden. Dieser Schritt-für-Schritt-Leitfaden zeigt Dir, wie Du das umsetzen kannst:

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Füge ein neues Modul ein, indem Du auf Einfügen > Modul klickst.
  3. Kopiere den folgenden Code in das Modul:
Sub DateinameInZelle()
    Dim Erfolg1 As Boolean
    MsgBox "Bitte aktuelle Auswertung auswählen"
    Erfolg1 = Application.Dialogs(xlDialogOpen).Show(arg1:=".xlsx")

    If Not Erfolg1 Then
        MsgBox "Keine Datei ausgewählt"
    Else
        With ThisWorkbook.Sheets("SBM")
            ' Daten kopieren
            Cells.Copy .Range("A1")
            ' Dateiname in Zelle E4 einfügen
            .Range("E4") = ActiveWorkbook.Name
        End With
        ActiveWorkbook.Close False
    End If
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus, indem Du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.

Du solltest nun den Dateinamen der geöffneten Datei in Zelle E4 deiner Arbeitsmappe sehen.


Häufige Fehler und Lösungen

  • Fehler: „Keine Datei ausgewählt“ erscheint.

    • Lösung: Stelle sicher, dass Du eine Datei auswählst, die dem Format .xlsx entspricht.
  • Fehler: Der Dateiname wird nicht in die Zelle geschrieben.

    • Lösung: Überprüfe, ob das richtige Tabellenblatt (in diesem Fall "SBM") existiert und korrekt benannt ist.

Alternative Methoden

Du kannst den Dateinamen auch ohne VBA auslesen, indem Du die folgende Excel-Formel verwendest:

=ZELLE("Dateiname", A1)

Diese Formel gibt den vollständigen Dateipfad und den Dateinamen zurück. Um nur den Dateinamen anzuzeigen, kannst Du die Funktion RECHTS und FINDEN kombinieren:

=RECHTS(ZELLE("Dateiname", A1);LÄNGE(ZELLE("Dateiname", A1))-FINDEN("[";ZELLE("Dateiname", A1))-1)

Praktische Beispiele

Ein praktisches Beispiel für das Auslesen des Dateinamens wäre, eine Datei zu öffnen, deren Daten in eine Master-Datei zu kopieren und gleichzeitig den Dateinamen für die spätere Referenz zu speichern.

Nehmen wir an, Du hast eine Datei namens Umsatzbericht_01012023.xlsx. Wenn Du dieses Skript ausführst, wird der Dateiname in Zelle E4 deiner Master-Datei erscheinen:

Umsatzbericht_01012023.xlsx

Tipps für Profis

  • Wenn Du die Dateinamen mehrerer Dateien auslesen möchtest, erwäge eine Schleife, die über alle geöffneten Arbeitsmappen iteriert.
  • Speichere den Dateinamen in einer Variablen, um ihn später in Deinem Skript wiederzuverwenden. Zum Beispiel:
Dim dateiname As String
dateiname = ActiveWorkbook.Name
  • Denke daran, Deine Makros regelmäßig zu testen, um sicherzustellen, dass sie in verschiedenen Excel-Versionen funktionieren.

FAQ: Häufige Fragen

1. Wie kann ich den Dateinamen in eine andere Zelle einfügen?
Du kannst den Zellbezug in der Zeile .Range("E4") = ActiveWorkbook.Name anpassen, um den Dateinamen in eine beliebige Zelle einzufügen.

2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der VBA-Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen, einschließlich Excel 2010, 2013, 2016, 2019 und Microsoft 365.

3. Kann ich den vollständigen Pfad des Dateinamens auslesen?
Ja, anstelle von ActiveWorkbook.Name kannst Du ActiveWorkbook.FullName verwenden, um den vollständigen Pfad und den Dateinamen zu erhalten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige