# Nacheinander Öffnen von *.txt* - Dateien?



## rambkue (24. Oktober 2005)

Hallo,

ich habe in einem Verzeichnis 20 *.txt* - Dateien gespeichert. Jetzt habe ich in Excel ein Makro programmiert, dass erstmal die Anzahl der Dateien erfasst (in diesem Fall 20). Nun sollen alle 20 *.txt* - Dateien einzeln und nacheinander mit Excel geöffnet, Informationen auf ein anderes Blatt übertragen und wieder geschlossen werden. Die Übertragung der Informationen ist nicht das Problem. Das Problem ist das Öffnen und Schließen der Dateien.
Kann mir da einer helfen (wenn möglich mit Code)? Das muss doch sicherlich mit einer Schleife gelöst werden, aber wie?
Danke

MfG Christian


----------



## Nico192 (24. Oktober 2005)

Hi ähmm...zu "Öffnen und Schließen"

Gibts hier nen Thread:http://www.tutorials.de/tutorials221645.html&highlight=%F6ffnen+Pfad 

P.S. SORRY!!, aber ich hatte jetzt keine Zeit die Threads genau durchzulesen, hoffe dieser Thread hilft dir etwas bei deinem Problem, und evt. :
  

Grüße Nico


----------



## gabrielgsell (25. Oktober 2005)

Hallo,

ein ähnliches Problem hatte ich auch schon, hier.

Dies sollte dir weiterhelfen, ansonsten einfach nochmals melden.

Viele Grüsse


----------



## rambkue (25. Oktober 2005)

Hallo,

also ich habe den Code mal an der Stelle eingefügt, hat aber nicht geklappt. Ich weiß langsam nicht mehr, wie das klappen soll. Habe schon alles probiert.

In der Variablen i ist doch die Anzahl der Dateien gespeichert (also 20). Ich habe ein Verzeichnis, in der sind alle 20 .txt-Dateien abgelegt. Diese Dateien sind nicht durchnummeriert, sondern die Namen sind unterschiedlich, aber alle im selben Format.
Nun möchte ich die 1. Txt-Datei öffnen, Zelle A1 kopieren und in einer separaten Excel-Datei einfügen. Anschließend soll die 1. Txt-Datei wieder geschlossen und die 2. Txt-Datei in diesem Ordner geöffnet werden und wiederum Zelle A1 kopiert und eingefügt werden. Und so soll das bis zur 20. Txt-Datei passieren.

Die Txt-Dateien haben alle einen langen Namen und diese sind in verschiedene Abschnitte unterteilt  (werden durch Unterstrich getrennt): PQ_Objekt_RotL1_P_8282300_0.ASC
Die ersten 2 Abschnitte (PQ_Objekt) sind immer gleich, aber ab dem 2. Unterstrich ist die Bezeichnung immer anders.

Wie kann ich die 20 Txt-Dateien alle öffnen, aber nacheinander und nicht alle zur gleichen Zeit?


----------



## gabrielgsell (25. Oktober 2005)

Hallo

Also erstmal nicht verzweifeln   

Dieses Code Bsp. zeigt dir einfach 20 (in deinem Bsp.) MsgBox'es nacheinander mit dem Filename.


```
Sub openFiles()

Dim path    As String
Dim pattern As String
Dim file    As String

path = "C:\Temp\"    //-> Pfad wo die Files liegen, dies musst du noch anpassen
pattern = "*.asc"      //-> Dateiende
file = Dir(path & pattern)  //-> Das erste File mit der Endung .asc
Do While file <> ""   //-> Hier macht er so lange, bis das letzte File im Verzeichnis durchgegangen ist
    MsgBox file   //-> Hier kommt dein Öffnen der Datei und kopieren Zelle A1.
    file = Dir        //-> Das nächste File im Verzeichnis
Loop

End Sub
```
Noch Fragen? Wenn ja, zeig mal dein Code.

Viele Grüsse


----------



## rambkue (26. Oktober 2005)

Hallo,

okay, danke erstmal. Werd es mal probieren. Aber vorher bräuchte ich noch die Anweisung wie ich die Files nacheinander öffne und schließe. Zelle A1 zu kopieren und woanders einzufügen ist nicht das Problem.

Gruß


----------



## gabrielgsell (26. Oktober 2005)

Also wie du die Dateien nacheinander durchgehst, hab ich oben beschrieben.

Die Open & Close Funktionen, kannst du in der VB-Hilfe nachschauen oder hier im Forum, z.B. hier.

Viele Grüsse


----------



## rambkue (26. Oktober 2005)

Hi!

Also das klappt irgendwie alles nicht so wie ich das haben möchte. Irgendwo fehlt was oder mach ich was falsch.

Das hab ich bisher realisiert:

Function DZ(str) As Long
Dim DatNam As String
Dim n As Long

    DatNam = Dir$(str & "\*.ASC")
    Do While Len(DatNam) > 0
        n = n + 1
        DatNam = Dir$()
    Loop
    DZ = n
End Function

Sub openFiles()

Dim Blatt As Worksheet
Dim i As Long
Dim Zelle As Range
Const Lw = "C:\"
Const Pfad1 = "C:\Auswertung"
Const Pfad2 = "C:\Daten"                       'Hier befinden sich die 20 Txt-Dateien
Const Datei = "Zusammenfassung.xls"

    i = DZ(Pfad2)
    MsgBox "Im Verzeichnis " & Pfad2 & " befinden sich " & i & " Dateien"

    ChDrive Lw
    ChDir Pfad1
    On Error Resume Next
    Workbooks.Open Datei                      'Öffnet Zusammenfassung.xls, wo die Informationen aus den 20 Txt-Dateien eingefügt werden sollen

    Range("A1:B1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.ClearContents                     'Bereinigt die Zellen von vorhergehenden Auswertungen
    Range("A1").Select                            'Zelle A1 wird selektiert, wo dann später die 1. Information abgespeichert werden soll

    ChDrive Lw
    ChDir Pfad2
    On Error Resume Next
    ?
_____________________________________________________________________
Und jetzt weiß ich nicht weiter. Denn jetzt sollen alle 20 Txt-Dateien im Ordner "Daten" nacheinander geöffnet werden. Dabei soll immer die Zelle A8 kopiert und in der "Zusammenfassung.xls" eingefügt werden und zwar beginnend bei Zelle A1 und endend bei Zelle A20. Nachdem eine Txt-Datei erfolgreich geöffnet und die Information aus Zelle A8 erfolgreich übernommen wurde, soll die Datei wieder geschlossen und die nächste Datei geöffnet werden.
Verstehst Du jetzt, was ich meine? Kannst Du mir da weiterhelfen?

Gruß


----------

