Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mehre Dateien nacheinander öffnen und speichern?

Mehre Dateien nacheinander öffnen und speichern?
ralle
Hallo !
Habe diese Frage schon mal gestellt, aber vielleicht könnt ihr mir ja heute helfen, folgendes Problem:
Habe mehrere Makros geschrieben (aufgezeichnet), die alle nacheinander aufgerufen werden per Call Befehl. Dabei wird eine TXT Datei aufgerufen und meinen Wünschen entsprechend formatiert.
Da in dem Verzeichnis mehrere TXT Dateien vorhanden sind (ca. 20 Dateien) wäre es schön wenn ich nun ein Makro vorschalten könnte, so das alle TXT Dateien in dem Verzeichnis nacheinander aufgerufen werden, dann mit meinen vorher aufgezeichneten Makros formatiert wird und dann im XLS Format in einem anderen Verzeichnis abgespeicherrt wird.
Kan mir da jemand helfen, wäre echt nett!!
Gruß und Danke
ralle
Anzeige
AW: Mehre Dateien nacheinander öffnen und speichern?
Christoph
Hi Ralle,
hier mal ein Bsp:
Gruß
Christoph
('ne Rückmeldung wäre nett)
Option Explicit

Sub DateienOeffnen()
Dim TmpDatei As String
Application.ScreenUpdating = False
ChDrive "d"
ChDir "D:\Test"
TmpDatei = Dir("D:\Text\*.txt")
Do While TmpDatei > ""
Workbooks.Open TmpDatei
'hier kannst deinen Code einfügen
'anschließend als xls speichern mit
'ActiveWorkbook.SaveAs Filename:=...., FileFormat:=xlNormal
ActiveWorkbook.Close
TmpDatei = Dir()
Loop
End Sub

Anzeige
AW: Mehre Dateien nacheinander öffnen und speichern?
ralle
Hallo Christoph,
das funktioniert soweit ganz gut, hat nur einen Schönheitsfehler:
Wenn ich das Makro starte, öffnet sich der Explorer um eine Datei auszuwählen, die geöffnet werden soll und dann kommt die Frage ob ich die Datei speichern möchte.
Ist es möglich, das einfach die Datei in dem bestimmmten Verzeichnis geöffnet wird ohne vorherige Frage ob eine Datei öffnen möchte. Auch die Abspeicherung sollte automatisch (ohne Frage ob ich speichern möchte) geschen und zwar dann im XLS Format und nicht im Ausgangs-Format TXT, aber dann in einem anderen Verzeichnis?
Fragen über Fragen, wäre schön wenn Du dazu eine Lösung hättest!
Gruß
ralle
Anzeige
AW: Mehre Dateien nacheinander öffnen und speichern?
Christoph
Hi Ralle,
ich kann deinen Fehler nicht ganz nachvollziehen.
bis auf: im Bsp-Code hatte ich einen Schreibfehler (das Verzeichnis muss jeweils das gleiche sein)
statt:
ChDrive "d"
ChDir "D:\Test"
TmpDatei = Dir("D:\Text\*.txt")
muss es natürlich lauten:
ChDrive "d"
ChDir "D:\Test"
TmpDatei = Dir("D:\Test\*.txt")
das Verzeichnis (in diesem Falle D:\Test), welches du im Code angibst, muss natürlich existieren.
Probier's mal aus - erzeuge ein Verzeichnis (zB wie oben), speicher zwei txt-Dateien in diesem Verzeichnis und führe den Code wie von mir gepostet aus.
Zu Testzwecken mal ohne: "ActiveWorkbook.Close", dann sind diese zwei txt-Dateien anschließend in Excel geöffnet
Gruß
Christoph
Anzeige
AW: Mehre Dateien nacheinander öffnen und speichern?
ralle
Hallo Christoph,
hat funktioniert, beide Textdateien sind geöffnet (Entschuldigung, hab wohl was falsch gemacht).
Was ich noch nicht ganz verstanden habe ist wo die Datei als Excel gespeichert wird. Gibt es da auch einen Pfad, den ich eingeben muß?
Danke schon mal für Deine Hilfe, echt nett!!
Gruß
ralle
Anzeige
AW: Mehre Dateien nacheinander öffnen und speichern?
Christoph
Hi Ralle,
sowas kannst du dir sehr bequem mit dem Makro-Recorder aufzeichen:
zB:
Do While TmpDatei > ""
Workbooks.Open TmpDatei
'hier kannst deinen Code einfügen

'anschließend als xls speichern mit
ChDir "D:\Test1"
ActiveWorkbook.SaveAs Filename:="D:\Test1\Mappe1.xls", FileFormat:=xlNormal

ActiveWorkbook.Close
TmpDatei = Dir()
Loop
'...
wobei so natürlich spätestens bei der zweiten Datei eine problem entsteht, da eine Datei mit diesem Namen (Mappe1.xls) im Verzeichnis schon existiert.
Um das zu vermeiden, könntest du xls-Dateien unter dem selben Namen wie die txt-Dateien speichern (nur eben als xls). Hierzu müsstest du den Namen der geöffneten txt-Datei auslesen und an eine Variable übergeben. Diese Variable setzt du anschließend als Dateinamen ein.
Bsp:
Do While TmpDatei > ""
Workbooks.OpenText TmpDatei
'.....
'schneide "txt" ab und setze "xls" dran:
FName = Left(TmpDatei, Len(TmpDatei) - 3)
FName = FName & "xls"

'als xls speichern:
ChDir "D:\Test1"
ActiveWorkbook.SaveAs Filename:=:="D:\Test1\" & FName, FileFormat:=xlNormal
'...usw
Gruß
Christoph
Anzeige
AW: Mehre Dateien nacheinander öffnen und speichern?
ralle
Hallo Christoph,
habe jetzt ein wenig getestet und mein Makro sieht jetzt folgendermaßen aus:

Sub test()
' test Makro
' Makro am 23.03.2004 aufgezeichnet
Dim TmpDatei As String
Application.ScreenUpdating = False
ChDrive "d"
ChDir "D:\Test"
TmpDatei = Dir("D:\Test\*.txt")
Do While TmpDatei > ""
Workbooks.OpenText TmpDatei
'hier kannst deinen Code einfügen
'schneidet "txt" ab und sezte "xls" drab:
FName = Left(TmpDatei, Len(TmpDatei) - 3)
FName = FName & "xls"
'anschließend als xls speichern mit
'ActiveWorkbook.SaveAs Filename:=...., FileFormat:=xlNormal
ChDir "D:\Test1"
ActiveWorkbook.SaveAs Filename:="D:\Test1\" & FName, FileFormat:=xlNormal
ActiveWorkbook.Close
TmpDatei = Dir()
Loop
End Sub

Beim ausführen des Makros kommt folgende Fehlermeldung:
BWA_Feb_04.txt wurde nicht gefunden. Überprüfen Sie die Rechtschreibung des
Dateinamens und überprüfen Sie, ob der Ort der Datei korrekt ist.
etc.
Im Verzeichnis D:\Test1 wird aber die Datei BWA_Feb_04.txt als BWA_Feb_04.xls gespeichert.
Zur information, im Verzeichnis D:\Test befinden sich zwei Textdateien:
BWA_Feb_04.txt
BWA_Jan_04.txt
genau in dieser Reihenfolge.
Wo kann das Problem leigen?
Für Deine Hilfe bich ich echt dankbar!!!
Gruß
ralle
Anzeige
keiner Flüchtigkeitsfehler
Christoph
mit fatalen Folgen.
Hi ralle,
die Anweisung:
"ChDir "D:\Test1"
in der Loop-Schleife muss weg. Du wilst ja nicht das Verzeichnis wechseln, sondern nur die Datei im angegebenen Pfad speichern.
Ich hatte aus den vorhergehenden Antworten den Teil hier rüber kopiert und da war offensichtich eine Zeile zuviel dabei.
so läuft's jetzt aber...hoffe ich doch sehr
Gruß
Christoph
Anzeige
Vielen Dank für die Hilfe, es funktioniert !!!!!
ralle
Hi Christoph,
jetzt funktioniert es wunderbar.
Ich danke Dir für Deine Hilfe.
Die Forum ist echt super!!!
Danke, Danke, Danke!!
Gruß
ralle
Danke für die Rückmeldung (o.T.)
23.03.2004 22:41:27
Christoph
An Christoph!!!
23.03.2004 18:03:44
ralle
Hallo Christoph,
habe mir das Makro nochmal angeschaut und mir ist aufgefallen, dass er da wo txt abgeschnitten wir und xls anghängt wird ein Fehler sein muss.
Für FName steht da wenn ich mit der Maus drüber gehe: BWA_JAN_04.xls
und für TmpDatei steht da:BWA_FEB_04.xls
Also irgendetwas passt da nicht, oder ?
Gruß
ralle
Anzeige
AW: Mehre Dateien nacheinander öffnen und speichern?
Ulf
Hat dir die Antwort von Ramses gestern Abend nicht geholfen?
Ulf
AW: Mehre Dateien nacheinander öffnen und speichern?
ralle
... ehrlich gesagt nicht ganz.
Bin aber auch nicht so ein Experte in solchen sachen, muss mir dass mühsam erarbeiten.
Gruß
ralle
PS: Man sollte sich ruhig mehrere Meinungen anhören!
AW: Mehre Dateien nacheinander öffnen und speichern?
Ulf
Ja, meinetwegen, nur sowas wird hier im Forum nicht gern gesehen.
Ulf
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Mehrere Dateien nacheinander öffnen und speichern in Excel


Schritt-für-Schritt-Anleitung

Um mehrere TXT-Dateien nacheinander zu öffnen, zu bearbeiten und im XLS-Format zu speichern, kannst Du das folgende VBA-Makro verwenden:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul über Einfügen > Modul.
  3. Füge den folgenden Code ein:
Sub DateienOeffnen()
    Dim TmpDatei As String
    Dim FName As String
    Application.ScreenUpdating = False
    ChDrive "d"
    ChDir "D:\Test"
    TmpDatei = Dir("D:\Test\*.txt")

    Do While TmpDatei <> ""
        Workbooks.OpenText TmpDatei
        ' Hier kannst deinen Code einfügen

        ' Dateinamen anpassen
        FName = Left(TmpDatei, Len(TmpDatei) - 4) & "xls"

        ' Als XLS speichern
        ActiveWorkbook.SaveAs Filename:="D:\Test1\" & FName, FileFormat:=xlNormal
        ActiveWorkbook.Close
        TmpDatei = Dir()
    Loop
End Sub
  1. Passe den Speicherort in ChDir und SaveAs an Deine Bedürfnisse an.
  2. Führe das Makro aus, um alle TXT-Dateien im angegebenen Verzeichnis zu öffnen und als XLS-Dateien zu speichern.

Häufige Fehler und Lösungen

  • Fehler: "Datei nicht gefunden."

    • Lösung: Überprüfe den Pfad in ChDir und stelle sicher, dass die TXT-Dateien im angegebenen Verzeichnis sind.
  • Fehler: Explorer öffnet sich zur Dateiauswahl.

    • Lösung: Stelle sicher, dass Du Workbooks.OpenText verwendest, um die Datei direkt zu öffnen, ohne eine Auswahl zu treffen.
  • Fehler: Datei wird nicht als XLS gespeichert.

    • Lösung: Überprüfe, ob der Dateiname korrekt generiert wird. Achte darauf, dass die Endung ".txt" korrekt abgeschnitten wird.

Alternative Methoden

  1. Excel-Datei öffnen und bearbeiten ohne Excel:

    • Du kannst auch externe Tools wie Python oder PowerShell nutzen, um TXT-Dateien zu verarbeiten und sie in das Excel-Format zu konvertieren.
  2. Batch-Dateien verwenden:

    • Erstelle eine Batch-Datei, die eine VBA-Excel-Anwendung aufruft, um mehrere Dateien nacheinander zu verarbeiten.

Praktische Beispiele

Hier ist ein Beispiel, wie Du das Makro anpassen kannst, um spezifische Formatierungen auf die TXT-Dateien anzuwenden, bevor Du sie speicherst:

Sub DateienOeffnen()
    Dim TmpDatei As String
    Dim FName As String
    Application.ScreenUpdating = False
    ChDrive "d"
    ChDir "D:\Test"
    TmpDatei = Dir("D:\Test\*.txt")

    Do While TmpDatei <> ""
        Workbooks.OpenText TmpDatei
        ' Beispiel für Formatierung
        With ActiveSheet
            .Columns("A:A").AutoFit
            .Range("A1").Font.Bold = True
        End With

        FName = Left(TmpDatei, Len(TmpDatei) - 4) & "xls"
        ActiveWorkbook.SaveAs Filename:="D:\Test1\" & FName, FileFormat:=xlNormal
        ActiveWorkbook.Close
        TmpDatei = Dir()
    Loop
End Sub

Tipps für Profis

  • Verwende Application.DisplayAlerts = False: Damit kannst Du die Bestätigungsdialoge beim Speichern unterdrücken.

  • Dateipfade dynamisch gestalten: Nutze InputBoxen, um den Benutzer nach Verzeichnissen zu fragen, damit das Makro flexibler wird.

  • Fehlerbehandlung einfügen: Implementiere einen On Error Resume Next Block, um Fehler während der Ausführung abzufangen.


FAQ: Häufige Fragen

1. Kann ich auch .dir-Dateien öffnen? Ja, Du kannst ähnliche Methoden verwenden, um .dir-Dateien zu öffnen. Stelle sicher, dass Du die richtigen Dateiformate und Pfade angibst.

2. Wie ändere ich den Excel-Dateityp ohne die Datei zu öffnen? Das ist mit VBA nicht direkt möglich. Du musst die Datei erst öffnen, um sie dann im gewünschten Format zu speichern.

3. Gibt es eine Möglichkeit, Excel-Temporärdateien wiederherzustellen? Ja, Du kannst die temporären Dateien in dem Verzeichnis finden, wo Excel seine temporären Dateien speichert. Diese Dateien haben oft die Endung .tmp.

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