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

Forumthread: Dateinamen aus Ordner auslesen ohne vollst. Pfad

Dateinamen aus Ordner auslesen ohne vollst. Pfad
25.09.2018 08:58:46
Mat
Hey!
Ich bin Mat und neu hier. Habe schon oft hier Lösungen für meine Excel Probleme gefunden. Nun möchte ich gerne aber einmal selbst Hilfe suchen, da ich im Netz nichts passendes finde.
Und zwar habe ich eine Tabelle, worin Kundennummern hinterlegt sind. In Spalte A sind Nummern in Form von 12387; 33897 etc. und in Spalte B sind Nummern in Form #9993897 etc.
In einem Unterordner ("data sheet") sind dazu "Datenblätter" hinterlegt die nach den Kundennummern benannt sind.
In der Tabelle sind alle möglichen Kundennummern enthalten, der Ordner "data sheet" enthält allerdings nur ausgefüllte Datenblätter, also nur eine geringere Anzahl der Tabelle.
Ich möchte nun in der Tabelle die verfügbaren Nummern markieren. entweder einfach Farbig hervorheben oder ein hinweis in einer zusatzspalte.
zuerst wollte ich die vorhandenen Dateien auslesen und anschließend mit einer bedingten formatierung kennzeichnen. das habe ich mit "namen definieren" und einer "index" Funktion gemacht. hat auch geklappt.
=DATEIEN("C:\abc\def\xyz\data sheets\*.*")
und
=INDEX(datlist;ZEILE())
Mein Problem ist, es müssen mehrere Kollegen damit arbeiten, welche aber nicht auf denselben Pfad zugreifen können. daher muss ich das Lösen indem in der Funktion nicht der Komplette Pfad eingegeben wird sondern nur der Unterordner in dem sich die datenblätter befinden in der Form "\data sheets\"
Also ohne das Laufwerk ("c:....") zu beschreiben. Das Funktioniert so allerdings nicht.
Kann mir dabei jemand helfen? Ich hoffe mein Problem ist verständlich Formuliert.
gerne auch eine Lösung über VBA.
Viele Grüße und Danke schon mal!
Mat
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: thisWorkbook.Path
25.09.2018 09:29:50
Fennek
Hallo,
wenn es immer ein Unterordner des aktuellen Workbooks ist, geht:

Pfad_Data = thisWorkbook.Path & "\data sheets"
mfg
AW: oder als Funktion ohne VBA
25.09.2018 17:17:23
Robert
Hallo,
den entsprechenden Unterordner der aktuellen Datei erhälst Du ohne VBA wie folgt:
=LINKS(ZELLE("dateiname");SUCHEN("[";ZELLE("dateiname"))-1)&"data sheets"
Dabei handelt es sich zwar um den vollständigen Pfad, aber mit den Pfadzuweisungen, wie es auf dem Rechner des jeweiligen Kollegen, der die Datei öffnet, eingestellt ist.
Gruß
Robert
Anzeige
AW: oder als Funktion ohne VBA
27.09.2018 08:04:27
Mat
Danke euch für die Hilfe!!
Mit der Lösung von Robert klappt das super...
eine weitere frage... ist es auch möglich eine "Oberordner" zu wählen? also wenn ich bspw. eine datei in einem Unterordner speicher, schließe und eine datei aus dem übergeordneten ordner öffnen möchte, ohne den Pfad zu nennen?
Mein Pfad: C:\Dateien\Datenbank\data sheets
So möchte ich vorgehen:
ActiveWorkbook.SaveAs (ThisWorkbook.Path & "\data sheets\" & Range("C7") & ".xlsm")
ActiveWorkbook.Close
Workbooks.Open .... Zugriff auf Datei "template" im Ordner Datenbank?
Viele Grüße und Danke :)
Anzeige
AW: oder als Funktion ohne VBA
27.09.2018 08:54:16
Mat
Das mit dem Ordner habe ich gelöst... jetzt muss ich nur noch die alte Datei schließen aber das bekomme ich nicht hin...
ActiveWorkbook.SaveAs (ThisWorkbook.Path & "\data sheets\" & Range("C7") & ".xlsm")
Workbooks.Open Filename:=(ThisWorkbook.Path & "\..\data base.xlsm")
Wie bekomme ich das alte sheet aktiv damit ich es schließen kann? es sollte dabei kein dateiname verwendet werden, da dieser auf 1000 Dateien variabel anzuwenden ist.. .
Danke :)
Anzeige
AW: oder als Funktion ohne VBA
27.09.2018 09:04:12
Nepumuk
Hallo Mat,
ein Beispiel:
Public Sub Beispiel()
Dim objWb As Workbook
Set objWb = ActiveWorkbook
objWb.SaveAs (ThisWorkbook.Path & "\data sheets\" & Range("C7") & ".xlsm")
Workbooks.Open Filename:=(ThisWorkbook.Path & "\..\data base.xlsm")
objWb.Close SaveChanges:=False
Set objWb = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: oder als Funktion ohne VBA
27.09.2018 11:49:11
Mat
Klappt super!
vielen vielen dank!!

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Dateinamen aus Ordner auslesen in Excel


Schritt-für-Schritt-Anleitung

Um Dateinamen aus einem Ordner auszulesen, ohne den vollständigen Pfad anzugeben, kannst Du folgende Schritte ausführen:

  1. Ordnerstruktur vorbereiten: Stelle sicher, dass sich der Unterordner, aus dem Du die Dateinamen auslesen möchtest, im gleichen Verzeichnis wie Deine Excel-Datei befindet.
  2. Funktion zur Ermittlung des Pfades: Verwende die Excel-Formel, um den Pfad des Unterordners zu ermitteln:
    =LINKS(ZELLE("dateiname");SUCHEN("[";ZELLE("dateiname"))-1)&"data sheets"

    Diese Formel gibt den Pfad des Unterordners „data sheets“ zurück.

  3. Dateien auflisten: Um die Dateinamen aufzulisten, kannst Du die folgende Formel verwenden:
    =DATEIEN("dein_pfad\data sheets\*.*")

    Ersetze dein_pfad mit dem tatsächlichen Pfad oder verwende die vorherige Formel.

  4. Index-Funktion nutzen: Um die Dateinamen in Excel zu platzieren, kannst Du die INDEX-Funktion verwenden:
    =INDEX(datlist;ZEILE())

Häufige Fehler und Lösungen

  • Problem: Formel gibt #NAME? zurück.

    • Lösung: Überprüfe, ob die Funktion DATEIEN korrekt eingegeben wurde und ob Du die Datei im richtigen Format gespeichert hast.
  • Problem: Pfad funktioniert nicht auf anderen Rechnern.

    • Lösung: Verwende die oben genannte Formel zur Ermittlung des Pfades, um den vollständigen Pfad zu vermeiden.

Alternative Methoden

Falls Du eine VBA-Lösung bevorzugst, kannst Du mit folgendem Code die Dateinamen auslesen:

Sub DateinamenAuslesen()
    Dim fso As Object
    Dim Ordner As Object
    Dim Datei As Object
    Dim i As Integer

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set Ordner = fso.GetFolder(ThisWorkbook.Path & "\data sheets")

    i = 1
    For Each Datei In Ordner.Files
        Cells(i, 1).Value = Datei.Name
        i = i + 1
    Next Datei
End Sub

Dieser VBA-Code listet alle Dateinamen im Unterordner „data sheets“ in der ersten Spalte Deiner Excel-Tabelle auf.


Praktische Beispiele

  1. Farbliche Markierung: Du kannst die bedingte Formatierung verwenden, um vorhandene Kundennummern farbig hervorzuheben. Dazu kannst Du die Formel zur Prüfung der Dateinamen nutzen.

  2. Zusatzspalte für Hinweise: Füge eine zusätzliche Spalte hinzu, die automatisch anzeigt, ob ein Datenblatt für die Kundennummer vorhanden ist oder nicht.


Tipps für Profis

  • Speichere Deine Excel-Datei als Makro-aktivierte Datei (.xlsm), wenn Du VBA-Code verwenden möchtest.
  • Teste Deine Formeln immer in einer Testumgebung, bevor Du sie in einer produktiven Datei anwendest.
  • Nutze Option Explicit in Deinem VBA-Code, um sicherzustellen, dass alle Variablen deklariert werden.

FAQ: Häufige Fragen

1. Wie kann ich die Dateinamen aus einem übergeordneten Ordner abrufen?
Du kannst den Pfad des übergeordneten Ordners mit "\.." im VBA-Code angeben, wie hier gezeigt:

Workbooks.Open Filename:=(ThisWorkbook.Path & "\..\data base.xlsm")

2. Kann ich die Dateinamen auch ohne VBA auslesen?
Ja, Du kannst die Excel-Formeln verwenden, um die Dateinamen ohne VBA auszulesen, indem Du die oben genannten Methoden anwendest.

3. Funktioniert das auch in Excel Online?
Die beschriebenen VBA-Methoden funktionieren nicht in Excel Online, aber die Formeln sollten auch hier anwendbar sein.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige