Microsoft Excel

Herbers Excel/VBA-Archiv

.txt-Datein in eine Spalte integrieren | Herbers Excel-Forum


Betrifft: .txt-Datein in eine Spalte integrieren von: Jonas
Geschrieben am: 03.02.2010 11:59:32

Hallo zusammen,

Ich habe einen Ordner mit knapp 3.000 .txt-Dateien. Um die Daten mit einem externen Programm weiterzuverarbeiten, benötige ich sie in einer Excel-Tabelle. Pseudoprogammierungstechnisch bin ich auf der Suche nach einem Makro, welches eine .txt-Datei aus einem Ordner auswählt, den Inhalt in der zweiten (!) Spalte/ersten Zeilen der Excel-Tabelle abspeichert (und zwar nur in diesem Kästchen, nicht über die komplette Arbeitsmappe), dann auf die nächste .txt-Datei des Ordners geht, den Inhalt in der zweiten Spalte/zweiten Zeile abspeichert, die nächste .txt dann in der zweiten Spalte, dritten Zeile usw.

Habe folgenden Eintrag im Forum bereits gefunden:
https://www.herber.de/forum/archiv/964to968/t964875.htm
So ähnlich stelle ich mir das vor, nur dass die .txt-Dateien nicht jede einzeln in einem neuen Tabellenblatt abgespeichert werden sollen, sondern alle in einem Tabellenblatt, in der gleichen Spalte in einer neuen Spalte!
Vielen, vielen Dank im Voraus.
Jonas

  

Betrifft: prinzipiell so von: Rudi Maintaire
Geschrieben am: 03.02.2010 12:42:51

Hallo,
die Texte dürfen natürlich nicht zu lang sein.

Sub ttt()
  Dim sFile As String, sText As String
  Const spfad As String = "c:\Test\"
  sFile = Dir(spfad & "*.txt")
  Do While sFile <> ""
    Open spfad & sFile For Input As #1
    sText = Input(LOF(1), 1)
    With Sheets(1)
      .Cells(Rows.Count, 2).End(xlUp).Offset(1) = sText
    End With
    Close 1
    sFile = Dir
  Loop
End Sub

Gruß
Rudi


  

Betrifft: AW: prinzipiell so von: Jonas
Geschrieben am: 03.02.2010 14:01:43

Hallo Rudi,

zunächst einmal vielen Dank für deine Antwort. Ich habe dein Makro ausprobiert, es funktioniert aber leider nicht wirklich. Speziell sitze ich aktuell vor dem Problem, dass ich nicht weiß, wie man die .txt-Dateien "aufruft".
Im Forum habe ich (wie bereits beschrieben) folgenden Code gefunden....

Sub Alle_Textdateien()
    strExt = "*.txt"       'Dateiextension ggf. anpassen
    ZuÖffnendeDatei = Application.GetOpenFilename("Textdateien (" & strExt & "), " & strExt,  _
Title:="Verzeichnisauswahl, erste Datei auswählen")
    If ZuÖffnendeDatei = False Then Exit Sub
    'Die ausgewählte Datei ist egal. es wird hier nur das Verzeichnis der Datei ausgewertet
    strPath = CurDir & "\"
    If strPath = "" Then
        Exit Sub
    Else
        ChDir strPath
        strFile = Dir(strPath & strExt) 'hier wird die erste Datei gefunden
        Do While Len(strFile) > 0
            Workbooks.OpenText Filename:=strPath & strFile, DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, _
                Tab:=True, Semicolon:=False, Comma:=False, _
                Space:=True, Other:=False, trailingMinusNumbers:=True
            Sheets(1).Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
            '...weiter mit Änderungen an der Tabelle
            '...
            strFile = Dir() ' nächste Datei
        Loop
    End If
End Sub
Das coole hieran ist speziell der erste Part, dass man nach Starten des Makros gefragt wird, mit welcher .txt-Datei man starten will. Sowas ähnliches bräuchte ich auch für mein Problem, nur dass es anschließend die .txt-Datein nicht jedes einzelne in einem einzelnen Blatt abspeichert, sondern alle in einem Blatt und jeweils einem Feld....
Über eine Antwort würde ich mich wirklich sehr freuen,
Jonas


  

Betrifft: Anpassung von: Rudi Maintaire
Geschrieben am: 03.02.2010 14:23:22

Hallo,

Sub ttt()
  Dim sFile As String, sText As String, sPfad As String
  
  With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Ordner wählen"
    .AllowMultiSelect = False
    .InitialFileName = "c:\Test\" 'anpassen oder weg lassen
    .InitialView = 2
    If .Show = -1 Then
       sPfad = .SelectedItems(1)
    End If
  End With
  
  If sPfad <> "" Then
    sFile = Dir(sPfad & "*.txt")
    Do While sFile <> ""
      Open sPfad & sFile For Input As #1
      sText = Input(LOF(1), 1)
      With Sheets(1)
        .Cells(Rows.Count, 2).End(xlUp).Offset(1) = sText
      End With
      Close 1
      sFile = Dir
    Loop
  End If
  
End Sub

Gruß
Rudi


  

Betrifft: AW: Anpassung von: Jonas
Geschrieben am: 03.02.2010 15:19:02

Hallo Rudi,

Vielen Dank für deine Hilfe, hast mir sehr geholfen!


Beiträge aus den Excel-Beispielen zum Thema ".txt-Datein in eine Spalte integrieren"