Clever-Excel-Forum

Normale Version: Datei mit variablem Namen importieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

mittels Makro möchte ich eine Datei importieren, die folgendes Format aufweist:

aaaa_bbb_yyyy-mm-ddhh_mm

a) "bbb" und das Datum sind variabel
b) Die Datei wird einmal in der Woche stets am gleichen Tag generiert

Wie sind "bbb" und das Datum zu codieren?

Freue mich auch über Hinweise auf einen bestehenden Thread, den es zu diesem Thema vielleicht bereits gibt (und ich nicht gefunden habe).

Danke schonmal!

Steini
Ein xlsx, csv, txt ?

Importieren oder öffnen ?
Hallo,

um meine Frage zu präzisieren:

Ich möchte eine Datei importieren, deren Name folgendes Format aufweist:

aaaa_bbb_yyyy-mm-ddhh_mm.xls

Danke.

Steini
Hallo Steini,

ich nehme an, dass Du die Datei öffnen willst und anschließend die Daten in eine andere übernehmen. Kann man übrigens auch direkt, ohne die Datei zu öffnen. Entsprechend ist Deine Beschreibung korrekt Smile

Die Codierung von bbb geschieht über eine Variable. Im Code tust Du die dimensionieren, z.B. Dim strBBB As String, dann musst Du sie mit irgendeinem Inhalt belegen und kannst sie dann beim Import verwenden.

Das Datum kann mit dem Format-Befehl kodiert werden, wenn man z.B. mit dem aktuellen Datum was programmieren will.
In Deinem Fall machst Du es wie mit der variable bbb. Also dimensionieren mit Dim strDatum as String, irgendwo füllen und beim Import verwenden.

Den Dateistring setzt Du z.B. mit + oder & zusammen:

"aaaa_" & strBBB & "_" & strDatum & ".xls"


Ich gehe dabei davon aus, das Du Datum und Zeit variabel haben willst und beim füllen der Variable das entsprechende Format verwendest.
Hallo André,

danke für deine Hinweise.

Mein erster Ansatz war, für bbb Platzhalter zu verwenden und im bisherigen Makro

...
workbooks.open filename:=[Pfad][Dateiname] zunächst nur bbb durch ??? zu ersetzen.

Das klappt so leider nicht.

Den Dateinamen zu trennen und über mehrere Variablen wieder zusammenzufügen scheint mir auch sinnvoll zu sein, allerdings erhalte ich derzeit die Meldung, dass "_" ein ungültiges Zeichen sei.

Die Datei bzw. die Daten sollen importiert werden, um sie in einem anderen Tabellenblatt auswerten zu können.

Die Aktualisierung soll dann über einen Schalter erfolgen, über den das Makro ausgelöst wird.

Eine gewisse Herausforderung dabei ist, dass sich das Datum im Dateinamen immer um sieben Tage ändert.

Anstatt die gesamte Datei zu importieren würde es im Grunde auch genügen, daraus drei bestimmte Variablen und ihre Werte auszulesen, was wohl der eleganteste Weg sein dürfte.

Anregungen zu Vorgehensweise und Umsetzung schätze ich - wie immer - sehr.

Steini
Hallo Steini,

bestimmt hast Du nicht alle Anführungszeichen übernommen.

strBBB="irgendwas"
strDatum="2015-12-1504_58"
workbooks.open filename:="aaaa_" & strBBB & "_" & strDatum & ".xls"
Hallo André,

die Datei kann ich nun mit dem Code öffnen.

Es funktioniert allerdings nur, wenn strBBB auch exakt die drei Zeichen des Dateinamens enthält,

also strBBB = "abc" ist und nicht "irgendwas". Ziel ist ja, anstelle "abc" Platzhalter einzusetzen, um Dateien öffnen

zu können, deren Name sich nur (abgesehen vom Datum) diesbezüglich unterscheidet.

Steini
Hallo Steini,

die Dir-Funktion unterstützt Platzhalter. So in der Art sollte es gehen:

Sub aaa()
 Dim strDatei As String, strDatum As String, strPfad As String
 
 strPfad = "C:\MeinPfad\"
 strDatum = "2015-12-1504_58"
 
 strDatei = Dir(strPfad & "aaaa_???_" & strDatum & ".xls")
 Workbooks.Open Filename:=strPfad & strDatei
End Sub

Gruß Uwe
Hallo Steini,

beim bbb hast Du ja noch nicht verraten, wie variabel das ist Smile Wenn es an einem Tag nur eine Datei gibt, dann passt Uwe's Lösung. Ich könnte mir vorstellen, das dort z.B. das Kürzel des Bearbeiters steht oder ... und, wie Du schreibst, nur eine Datei pro Woche kommt.

Hast Du aber an einem Tag neben der bbb noch eine Datei aaa und eine ccc usw, dann bräuchte man entweder eine Schleife drum herum um jede Datei zu öffnen oder noch eine weitere Bedingung und Entscheidung, um gezielt Dateien zu bearbeiten.