Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Moderator: ModerationP

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon Flotter Feger » 14. Jun 2019, 21:17

Hallo,

ja ... eine Schleife ... OK ...
Code: Alles auswählen
Function ReadThatLine(ByVal FileName As String, ByVal Zeile As Long) As String

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile(FileName)

Do
    If objTextFile.Line = Zeile Then
        ReadThatLine = objTextFile.ReadLine
    Else
        objTextFile.Skipline
    End If
Loop Until objTextFile.Line = Zeile + 1
objTextFile.Close

Set objTextFile = Nothing
Set objFSO = Nothing
End Function

Sub GetDataFromTextFile()
Dim shZiel As Worksheet
Dim z As Long
Dim Dateiname As String
Const Ordner As String = "C:\1\" < --anpassen

Set shZiel = ActiveSheet

Dateiname = Dir$(Ordner & "\*.txt") 'nur txt Dateien
Do While Len(Dateiname) > 0
    z = z + 1
    shZiel.Cells(z, 1).Value = ReadThatLine(Ordner & Dateiname, 13)
Dateiname = Dir$()
Loop
End Sub
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Benutzeravatar
Flotter Feger
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2227
Registriert: 24. Okt 2016, 16:40

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon Storax » 14. Jun 2019, 21:24

Das Du das kannst, ist schon klar 8-)
Benutzeravatar
Storax
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3425
Registriert: 22. Okt 2013, 18:18

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon GMG-CC » 15. Jun 2019, 12:02

So, hier noch (wie versprochen) meine Power Query-Lösung für *.txt-Files, welche alle die gleiche Länge haben. Erst einmal ohne Hilfe der großen, weiten Netzwelt ... 8-)
Bei mir liegen die (5) Textdateien im Verzeichnis "C:\Data\Test-Text-Files (1)"
Ich habe auch an einer Lösung mit *.txt unterschiedlicher Länge gebastelt und dank ImkeF auch eine passable Lösung gefunden. Die wird dann in nächster Zeit nebst dieser Lösung kommentiert in meinem Blog erscheinen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Gruß
Günther

Excel-ist-sexy!
Wenn du keine Excel-Version angegeben hast, gehe ich von mindestens Excel 2016 aus.
Hilfe zur Selbsthilfe, das ist IMHO der Sinn eines Forums, nicht Komplettlösungen für den kommerziellen Einsatz und das "natürlich" gratis!
Benutzeravatar
GMG-CC
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4090
Registriert: 12. Nov 2011, 23:17
Wohnort: Geesthacht bei Hamburg

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon Storax » 15. Jun 2019, 13:00

Das Problem ist aus meiner Sicht gelöst, speziell ist es unnötig Lösungen für Dateien unterschiedlicher Länge zu basteln,
siehe meine Tipp oben. Du musst nur die Funktion zum Transformieren anpassen. Da ist bei Dir noch der generierte M-Code drin.
Den durch ähnlichen Code ersetzen, den ich oben gepostet habe. Das geht im erweiterten Editor.

Am Ende war das ganze IMHO doch nicht so aufwändig, wie ich zuerst dachte

Update: Ich habe Dein Beispiel genommen und angepasst. Sind jetzt Dateien unterschiedlicher Länge dabei.
Geht nur schief, wenn eine Datei mit weniger als 13 Zeilen dabei ist. Das kriegt man sicher auch in den Griff, aber
das kann ja der OP zur Übung machen :mrgreen:
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
Storax
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3425
Registriert: 22. Okt 2013, 18:18

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon snb » 15. Jun 2019, 16:17

Oder

Code: Alles auswählen
Sub M_snb()
  sn = Split(CreateObject("wscript.shell").exec("cmd /c dir G:\OF\*.txt /b").stdout.readall, vbCrLf)
  ReDim sp(UBound(sn), 0)
   
  With CreateObject("scripting.filesystemobject")
    For j = 0 To UBound(sn)
      sp(j, 0) = Split(.OpenTextFile("G:\OF\" & sn(j)).readall, vbCrLf)(12)
    Next
  End With
   
  Sheet1.Cells(1).Resize(UBound(sp) + 1) = sp
End Sub
snb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6910
Registriert: 25. Sep 2014, 16:37

Re: Eine bestimmte Zeile aus mehreren ASCII-Dateie in Excel

Beitragvon d.mario » 17. Jun 2019, 06:46

Hallo zusammen,

Danke für die schnellen Antworten und Hilfestellungen. Habe gar nicht damit gerechnet, dass eine so schnelle Lösung von meinem Problem erreicht wird.

Ich nehme die VB Lösung, mit PQ kenn ich mich leider nicht so ganz aus.

Aber vielen dank an alle die bei der Lösung geholfen haben!
d.mario
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3
Registriert: 14. Jun 2019, 10:30

Vorherige

Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: TommyDerWalker und 27 Gäste