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

Variabler Dateinamen, daraus dann Zellen auslesen

Variabler Dateinamen, daraus dann Zellen auslesen
16.07.2018 13:42:30
Manu
Liebe Profis,
nach längerer Suche habe ich leider ein Problem nicht beheben können, obwohl ich gefühlt die Lösung haben müsste. Daher bitte ich nun um eure Hilfe.
Ich versuche ein Makro zu schreiben, damit sich eine Reporting-Tabelle mit Werten aus verschiedenen Quelldateien füllt. Diese Quelldateien werden täglich aktualisiert und abgespeichert (der Ordner füllt sich also).
Ziel ist es, ein Reporting für eine Kampagne zu Thema A und zu Thema B usw. zu erhalten. In dieser Reporting-Tabelle sollen immer tagesaktuell die Werte aus den jeweils aktuellsten Dateien genommen werden, am Folgetag wird dann eine weitere Zeile beschrieben, usw.
Im Kopf klang das alles so einfach.
Aktuell scheitere ich aber am Bezug zu den verschiedenen Dateien und Dateinamen.
Ich habe je Tag 4-7 Reports als Quelle.
Der Aufbau der Dateinamen ist dabei immer gleichbleibend, für jeden der Maximal 7 Quellen und es sind immer Exceldateien (xls Endungen, nicht xlsx).
Kunde_Name_Bezug_Quelle_Datum

Ich arbeite mit Office 2013 / bald Office 365 und schreibe darin die Makros.
Der oben aufgebaute Dateiname kann z.B. sein:
Mueller_Ein Beispiel_Desktop_ABC_30062018.xls
In meiner Reporting-Tabelle habe ich zwei FElder, in denen ich den "Kunde" und den "Name" eintrage. Diese beiden Felder sollen ausgelesen werden und dann genutzt werden, um in dem Ordner die passenden Dateien zu finden. Je nach Bezug und Quelle und Datum müsste ich dann ja weitere Kriterien abfragen / einprogrammieren.
Aktuell sieht mein Code so aus:
Sub suchen()
'Report-Ordner soll durchsucht werden und die jeweils passende Datei wird dann geöffnet, um  _
_
Werte auszulesen
Dim Dateiname As String
Dim Suchbegriff As String
Dim Pfad As String
Application.ScreenUpdating = False
Pfad = "C:\Users\ICH\Desktop\Reports\" 'Der Pfad muss einmalig im Makro angepasst werden!!
Suchbegriff = Worksheets("TEMPLATE").Cells(3, 11).Value & "_" & Worksheets("TEMPLATE"). _
Cells(2, 11).Value 'Der Begriff aus Feldern "Kunde" und "Name" wird gesucht
Dateiname = Dir(Pfad & Suchbegriff & "*.xls")'HIER IST DER FEHLER, das klappt nicht...
If Dateiname  "" Then
Workbooks.Open Pfad & Dateiname
Else
MsgBox "Keine Ergebnisse gefunden"
Exit Sub
End If
Application.ScreenUpdating = True
End Sub

"Pfad" und "Suchbegriff" werden korrekt erstellt und stimmen mit dem Anfang des Dateinamens überein.
Leider scheitere ich derzeit immer an der Zeile der Dateinamen-Definition.
Die Variable wird einfach nicht gespeichert...
Muss ich denn den Dateinamen ganz exakt eintippen oder reicht die Übereinstimmung mit Kunde und Name, um dann die Datei zu öffnen und erstmal andere Sachen auszuführen...?
Ist der Bezug zum Platzhalter * falsch?
Ganz herzlichen Dank vorab,
schöne Grüße
Manu

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variabler Dateinamen, daraus dann Zellen auslesen
16.07.2018 14:18:50
PeterK
Hallo
Lass Dir im Direktfenster einmal alle Files ausgeben (vielleicht ist Dein gewünschter File nicht vorhanden)
P.S. "Exit Sub" bevor Screenupdating wieder eingeschaltet wird solltest Du nicht machen

Sub ShowFiles()
Pfad = "C:\Users\"
SeaFiles = "*.*"
myName = Dir(Pfad & SeaFiles)
Do While myName  ""
Debug.Print myName
myName = Dir
DoEvents
Loop
End Sub

@Peter
16.07.2018 14:25:16
UweD
Screenupdating wird bei jedem Makroende automatisch wieder eingeschaltet
LG UweD
AW: Variabler Dateinamen, daraus dann Zellen auslesen
16.07.2018 14:23:18
UweD
Hallo
bei mir klappt es.
Hast du in K3 oder K2 evtl führende oder nachhängende Leerzeichen in der Zelle?
LG UweD
Anzeige
AW: Variabler Dateinamen, daraus dann Zellen auslesen
16.07.2018 14:25:14
Torsten
Du gibst der Variable ja nur die ersten 2 Teile des Dateinamens. So kann VBA das nicht finden. Du gibst der Variable folgendes:
C:\Users\ICH\Desktop\Reports\Mueller_Ein Beispiel.xls
Aber du sagst ja, dass der Dateiname noch mehr beeinhaltet:
Mueller_Ein Beispiel_Desktop_ABC_30062018.xls
AW: Variabler Dateinamen, daraus dann Zellen auslesen
16.07.2018 14:34:05
Manu
Hallo Torsten,
genau - die Namen beinhalten noch mehr.
Also ist mein Fehler, dass man nicht nur diesen Teil nutzen kann um die Datei zu nutzen, sondern eine exakte Übereinstimmung benötigt, richtig?
Dann versuche ich mich daran mal weiter...
Danke sehr.
Schöne Grüße
Anzeige
AW: Variabler Dateinamen, daraus dann Zellen auslesen
16.07.2018 14:34:06
Manu
Hallo Torsten,
genau - die Namen beinhalten noch mehr.
Also ist mein Fehler, dass man nicht nur diesen Teil nutzen kann um die Datei zu nutzen, sondern eine exakte Übereinstimmung benötigt, richtig?
Dann versuche ich mich daran mal weiter...
Danke sehr.
Schöne Grüße
AW: Variabler Dateinamen, daraus dann Zellen auslesen
16.07.2018 14:36:22
UweD
Also ist mein Fehler, dass man nicht nur diesen Teil nutzen kann um die Datei zu nutzen, sondern eine exakte Übereinstimmung benötigt, richtig?
Nein, der Teil reicht, da du ja das * auch verwendest
AW: Variabler Dateinamen, daraus dann Zellen auslesen
16.07.2018 14:45:43
Manu
Hallo Uwe - danke für den Nachtrag.
Dann weiß ich leider (wieder) nicht, warum mein Code nicht funktioniert. Die Variable "Dateiname" bleibt immer leer bei mir und somit ist danach das Sub beendet...
Anzeige
AW: Variabler Dateinamen, daraus dann Zellen auslesen
16.07.2018 14:47:43
UweD
hast du mal auf Leerzeichen geprüft, wie in meiner anderen Antwort?
AW: Variabler Dateinamen, daraus dann Zellen auslesen
16.07.2018 14:53:40
Manu
Hallo Uwe,
danke für den Tip.
Ja, habe ich gemacht.
Vor und nach den Worten stehen keine Leerzeichen.
Aber wie in meinem Beispiel, stehen einmal zwei Worte durch ein Leerzeichen getrennt in der Zelle.
In Summe ergibt das wirklich folgenden Dateinamen-Anfang: "Kunde_Ein Beispiel"
Ist das Leerzeichen in der Mitte ein Problem?
AW: Variabler Dateinamen, daraus dann Zellen auslesen
16.07.2018 14:59:48
UweD

Ist das Leerzeichen in der Mitte ein Problem?

Nein, das ist kein Problem.
Hast du den Pfadnamen richtig übernommen und auch am Ende ein \?
lade mal eine Mustermappe hoch..
LG UweD
Anzeige
AW: Variabler Dateinamen, daraus dann Zellen auslesen
16.07.2018 15:10:25
Manu
Hm, eigentlich habe ich alles gemacht, wie du es jetzt auch fragst...
Hier mal das Beispiel:
https://www.herber.de/bbs/user/122709.xlsm
Besten Dank für deine Mühe!
AW: Variabler Dateinamen, daraus dann Zellen auslesen
16.07.2018 15:30:27
UweD
Hallo nochmal
Ich kann keinen Fehler feststellen.
Kann meiner Meinung nach nur noch Pfad sein. Den kann ich ja leider nicht prüfen.
LG UweD
AW: Variabler Dateinamen, daraus dann Zellen auslesen
16.07.2018 15:44:45
Torsten
Ja, auch dein eigener Code funktioniert bei mir ohne Probleme.
Habs gerade getestet.
AW: Variabler Dateinamen, daraus dann Zellen auslesen
16.07.2018 17:03:55
Manu
Danke euch beiden...
Sprich: bei euch beiden wird die Variable beschrieben und es gehen auch Dateien in dem Ordner auf?
Anzeige
Ja.
16.07.2018 17:08:12
UweD
Letzter Versuch:
Mach mal ne Hardcopy vom Windows-Explorer von dem Verzeichnis, in dem die Dateien liegen und lad das Bild mal hoch.
LG UweD
AW: Ja.
17.07.2018 09:00:41
Manu
Hi, ich lade gleich das Bild hoch, vom Explorer.
Ich habe nochmal was versucht: bisher hatte ich die Ziel-Excel in einem anderen Verzeichnis, als die Quell-Exceldateien. Das hat nicht funktioniert. Leider funktioniert es auch nicht, wenn ich alle in denselben Ordner packe...
Nach wie vor klappt es nicht, dass die Variable "Dateiname" beschrieben wird. Sie bleibt immer leer.
Hier nochmal mein Code:
Sub suchen()
'Report-Ordner soll durchsucht werden und die jeweils passende Datei wird dann geöffnet, um  _
Werte auszulesen
Dim Dateiname As String
Dim Suchbegriff As String
Dim Pfad As String
'Application.ScreenUpdating = False
Pfad = "C:\Makro" 'Der Pfad muss einmalig im Makro angepasst werden!!
Suchbegriff = Worksheets("TEMPLATE").Cells(3, 11).Value & "_" & Worksheets("TEMPLATE"). _
Cells(2, 11).Value
Dateiname = Dir(Pfad & Suchbegriff & "*.xls")
If Dateiname  "" Then
Workbooks.Open Pfad & Dateiname
Else
MsgBox "Keine Ergebnisse gefunden"
Exit Sub
End If
'Application.ScreenUpdating = True
End Sub
Im Anschluss lade ich einen Screenshot des Windows-Explorers und meine zugehörige Zieldatei hoch.
Tausend Dank für die Mühe...
Anzeige
AW: Ja.
17.07.2018 09:30:33
UweD
Hallo
in deinem ersten Beitrag hast du geschrieben, das es .xls Dateien sind.
Das hast du auch so im Makro berücksichtigt.
Die Beispieldateien sind aber .xlsx Dateien. Dann kann das Makro ja nichts finden.
1) Also entweder
Dateiname = Dir(Pfad & Suchbegriff & "*.xls*")

oder
Dateiname = Dir(Pfad & Suchbegriff & "*.xlsx")

schreiben.
2) außerdem am Ende der Pfadangebe muss ein \ stehen.
LG UweD
Anzeige
AW: Ja.
17.07.2018 09:41:35
Manu
DAS WAR ES!!!!!
In der Tat waren es am Ende doch *.xlsx Dateien...
Wahnsinn.
Sorry.
Der Pfadfehler "\ ist entstanden, als ich das Beispiel generiert habe.
Das hatte ich vorher inkludiert...
Aber tatsächlich nutze ich jetzt die Suche nach "*.xls*" und es geht!
DANKE für deine Geduld und Hilfe!
Super!
Puuh, geschafft. Danke für die Rückmeldung owt
17.07.2018 09:45:34
UweD
AW: Variabler Dateinamen, daraus dann Zellen auslesen
16.07.2018 14:54:18
UweD

Pfad = "C:\Users\ICH\Desktop\Reports\"
With Worksheets("TEMPLATE")
Suchbegriff = Trim(.Cells(3, 11)) & "_" & Trim(.Cells(2, 11))
'Der Begriff aus Feldern "Kunde" und "Name" wird gesucht
End With
Dateiname = Dir(Pfad & Suchbegriff & "*.xls")
LG UweD
Anzeige
AW: Variabler Dateinamen, daraus dann Zellen auslesen
16.07.2018 15:18:32
Torsten
sorry, das * hab ich uebersehen

398 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige