Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1568to1572
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
TXT Dateien einlesen
01.08.2017 16:01:13
Manfred
Hallo zusammen,
habe mal wieder ein Problem.
Ist es möglich mehrere Txt.Dateien mit „Application.GetOpenFilename“ in einen vorgegebenen Excelbereich einzulesen ? Ab A1 oder B2
Aus der txt.Datei sollen nur bestimmte Zeilen 5, 85, 86, 87 usw. eingelesen und in die Spalten geschrieben werden.
Bei TAB’s soll gesplitet werden.
Ich hatte solch ein Makro im Forum schon gefunden aber jetzt finde ich es nicht mehr.
Kennt sich da jemand aus ?
Mit freundlichen Grüßen
Manfred

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TXT Dateien einlesen
01.08.2017 21:38:13
Sepp
Hallo Mafred,
ein Beispiel.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub importTextFiles()
Dim vntItem As Variant, rng As Range
Dim vntFiles() As String, vntValues() As Variant
Dim lngI As Long, lngN As Long, lngRow As Long
Dim strTemp As String
Dim ff As Integer

With Application.FileDialog(msoFileDialogFilePicker)
  .InitialFileName = "E:\Forum" 'Startverzeichnis
  .Title = "Dateien auswählen"
  .ButtonName = "Auswahl..."
  .InitialView = msoFileDialogViewList
  .AllowMultiSelect = True
  .Filters.Clear
  .Filters.Add "Text Dateien", "*.txt; *.csv", 1
  .FilterIndex = 1
  If .Show = -1 Then
    Redim vntFiles(.SelectedItems.Count - 1)
    For Each vntItem In .SelectedItems
      vntFiles(lngI) = vntItem
      lngI = lngI + 1
    Next
  End If
End With

If lngI > 0 Then
  For lngI = 0 To UBound(vntFiles)
    lngRow = 0
    ff = FreeFile
    Open vntFiles(lngI) For Input As #ff
    Do While Not EOF(ff)
      lngRow = lngRow + 1
      Line Input #ff, strTemp
      Select Case lngRow
        Case 5, 15, 46, 84, 97 'Zeilen die importiert werden
          Redim Preserve vntValues(lngN)
          vntValues(lngN) = strTemp
          lngN = lngN + 1
        Case Else
      End Select
    Loop
    Close #ff
  Next
End If

If lngN > 0 Then
  Set rng = ThisWorkbook.Sheets("Tabelle1").Range("A2").Resize(lngN, 1) 'Ausgabezelle
  rng = Application.Transpose(vntValues)
  rng.TextToColumns Destination:=rng.Cells(1, 1), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False
End If

Set rng = Nothing
End Sub

Gruß Sepp

Anzeige
AW: TXT Dateien einlesen
02.08.2017 08:45:49
Manfred
Hallo Sepp,
vielen Dank für das Makro, es funzt.
Wäre es möglich den Dateinamen.txt von jeder eingelesen Datei als Überschrift zu setzen ?
Mit freundlichen Grüßen
Manfred
AW: TXT Dateien einlesen
02.08.2017 12:38:42
Rudi
Hallo,
sollte so gehen:
If lngI > 0 Then
For lngI = 0 To UBound(vntFiles)
    Redim Preserve vntValues(lngN)
vntValues(lngN) = vntFiles(lngI)
lngN = lngN + 1
    lngRow = 0
ff = FreeFile
Open vntFiles(lngI) For Input As #ff
Do While Not EOF(ff)
lngRow = lngRow + 1
Line Input #ff, strTemp
Select Case lngRow
Case 5, 15, 46, 84, 97 'Zeilen die importiert werden
Redim Preserve vntValues(lngN)
vntValues(lngN) = strTemp
lngN = lngN + 1
Case Else
End Select
Loop
Close #ff
Next
End If
Gruß
Rudi
Anzeige
AW: TXT Dateien einlesen
02.08.2017 13:15:30
Manfred
Hallo Rudi,
es funzt, geht es auch ohne Pfadangabe ? Nur Dateiname.txt
Mit freundlichen Grüßen
Manfred
AW: TXT Dateien einlesen
02.08.2017 14:16:55
Rudi
ja klar geht das.
vntValues(lngN) = Right(vntFiles(lngI), len(vntfiles(lngi))-instrrev(vntfiles(lngi),"\))
oder
vntValues(lngN)= split(vntfiles(lngI),"\)(ubound(split(vntfiles(lngI),"\)))
Gruß
Rudi
AW: TXT Dateien einlesen
02.08.2017 16:09:57
Manfred
Hallo Rudi,
beide Lösungen erzeugen eine Fehlermeldung. Ausdruck erwartet.
Was muss ich dafür ersetzen ?
Mit freundlichen Grüßen
Manfred
AW: TXT Dateien einlesen
02.08.2017 18:31:58
Sepp
Hallo Manfred,
die Fehlenden "" hätten dir aber schon selber auffallen können!
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub importTextFiles()
Dim vntItem As Variant, rng As Range
Dim vntFiles() As String, vntValues() As Variant
Dim lngI As Long, lngN As Long, lngRow As Long
Dim strTemp As String
Dim ff As Integer

With Application.FileDialog(msoFileDialogFilePicker)
  .InitialFileName = "E:\Forum" 'Startverzeichnis
  .Title = "Dateien auswählen"
  .ButtonName = "Auswahl..."
  .InitialView = msoFileDialogViewList
  .AllowMultiSelect = True
  .Filters.Clear
  .Filters.Add "Text Dateien", "*.txt; *.csv", 1
  .FilterIndex = 1
  If .Show = -1 Then
    Redim vntFiles(.SelectedItems.Count - 1)
    For Each vntItem In .SelectedItems
      vntFiles(lngI) = vntItem
      lngI = lngI + 1
    Next
  End If
End With

If lngI > 0 Then
  For lngI = 0 To UBound(vntFiles)
    Redim Preserve vntValues(lngN)
    vntValues(lngN) = Mid(vntFiles(lngI), InStrRev(vntFiles(lngI), "\") + 1)
    lngN = lngN + 1
    lngRow = 0
    ff = FreeFile
    Open vntFiles(lngI) For Input As #ff
    Do While Not EOF(ff)
      lngRow = lngRow + 1
      Line Input #ff, strTemp
      Select Case lngRow
        Case 5, 15, 46, 84, 97 'Zeilen die importiert werden
          Redim Preserve vntValues(lngN)
          vntValues(lngN) = strTemp
          lngN = lngN + 1
        Case Else
      End Select
    Loop
    Close #ff
  Next
End If

If lngN > 0 Then
  Set rng = ThisWorkbook.Sheets("Tabelle1").Range("A2").Resize(lngN, 1) 'Ausgabezelle
  rng = Application.Transpose(vntValues)
  rng.TextToColumns Destination:=rng.Cells(1, 1), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False
End If

Set rng = Nothing
End Sub

Gruß Sepp

Anzeige
AW: TXT Dateien einlesen
04.08.2017 08:30:37
Manfred
Hallo Sepp,
sorry bin erst wieder heute da.
Das Makro funzt suupper.
Recht herzlichen Dank. Auch an Rudi.
MfG
Manfred

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige