vbaneuling2015
Goto Top

Bestimmte Daten aus mehreren Txt-Dateien auslesen und in excel sortiert in spalten einfügen

Hallo zusammen,

leider habe ich keine Ahnung von VBA. Habe dennoch schon einige Foren durchsucht und leider keinen Erfolg gehabt.

Ich habe einen Ordner, mit vielen Txt. dateien. Deren Name ist bis auf eine fortlaufende Nummer gleich (z.B. 6442_Aktuatorring_1050_chr, 6442_Aktuatorring_1051_chr, usw).

Ich muss jetzt aus einem txt-File, dass so aussieht:

1 Zeile: planid partnb id type idsymbol actual nominal uppertol lowertol deviation exceed warningLimitCF featureid featuresigma comment link linkmode mmc useruppertol userlowertol fftphi fftphiunit zoneroundnessangle groupname groupname2 datumAid datumBid datumCid natuppertolid natlowertolid decimalplaces featurePosX featurePosY featurePosZ group1 group2 group3 group4 group5 group6 group7 group8 group9 group10
2 Zeile: 6442_Aktuatorring 1050 Ebenheit_A Ebenheit gdtFlat 0.0094793 0.0000000 0.0150000 0.0000000 0.0094793 100.0000000 Ebene_Fläche A 0.0029168 0.0150000 0.0000000 1 2 3 0.0009834 0.0000505 0.0006011
3 Zeile: END


die zweite Zeile auslesen. Hierbei soll jeder Parameter in eine separate Spalte in der Exceldatei eingelesen werden. Für jedes txt-File möchte ich eine neue Zeile verwenden.

Könnt Ihr mir weiterhelfen?

Ich wäre euch sehr dankbar.

Schöne Grüße,

Stefan

Content-Key: 282201

Url: https://administrator.de/contentid/282201

Printed on: April 19, 2024 at 07:04 o'clock

Member: TlBERlUS
TlBERlUS Sep 07, 2015 at 10:24:27 (UTC)
Goto Top
Hi,

=

generell ist das mit Powershell schnell gemacht (und ist einfacher als vba).

Grüße,

Tiberius
Mitglied: 114757
114757 Sep 07, 2015 updated at 14:25:33 (UTC)
Goto Top
Da reicht ein Powershell-Einzeiler, für das Gedöns
gci 'c:\ordner\*.txt' | %{((gc $_.Fullname)[1] -split ' ') -join ';' | add-content 'c:\zusammenfassung.csv'}  
Wenn's unbedingt VBA sein muss, das haben wir auch auf Lager:
Sub ImportTextfiles()
    Dim fd As FileDialog, fso As Object, rngCurrent As Range, line1 As String, file As Variant, arrCols As Variant
    ' Objekte erzeugen  
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    Set fso = CreateObject("Scripting.FileSystemObject")  
    'nächste freie Zeile ermitteln  
    Set rngCurrent = Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)  
    With fd
        ' erlaube eine Mehrfachauswahl  
        .AllowMultiSelect = True
        ' wurde der Dialog mit OK verlassen  
        If .Show = -1 Then
            ' Für jede ausgewählte Datei ...  
            For Each file In .SelectedItems
                arrCols = Split(Split(fso.OpenTextFile(file, 1).ReadAll(), vbNewLine)(1), " ")  
                rngCurrent.Resize(1, UBound(arrCols)).Value = arrCols
                ' Verschiebe die aktuelle Zeile 1 weiter nach unten  
                Set rngCurrent = rngCurrent.Offset(1, 0)
            Next
        End If
    End With
    Set fso = Nothing
    Set fd = Nothing
End Sub
Gruß jodel32
Member: VBANeuling2015
VBANeuling2015 Sep 08, 2015 at 08:03:40 (UTC)
Goto Top
Hallo,

Vielen Dank erstmals.

@jodel 32: Deine VBA Version gefällt mir Super.

Kannst du mir noch sagen, wie ich die Daten aus der txt Datei in die einzelen Spalten in excel eintragen kann?

Schöne Grüße!
Mitglied: 114757
114757 Sep 08, 2015 updated at 08:20:52 (UTC)
Goto Top
Zitat von @VBANeuling2015:
Kannst du mir noch sagen, wie ich die Daten aus der txt Datei in die einzelen Spalten in excel eintragen kann?
Hä??? Das macht das Skript doch schon ....
Member: VBANeuling2015
VBANeuling2015 Sep 08, 2015 at 08:28:09 (UTC)
Goto Top
Nein es schreibt mir die Daten in einer Wurst hin pro Txt File

Leider nicht aufgeteilt in Spalten
Member: VBANeuling2015
VBANeuling2015 Sep 08, 2015 at 08:29:48 (UTC)
Goto Top
z.B.
Spalte A 6442_Aktuatorring
Spalte B 1050
Spalte C Ebenheit_A
Mitglied: 114757
114757 Sep 08, 2015 updated at 08:31:21 (UTC)
Goto Top
Dann sind deine Spalten nicht mit einem Leerzeichen voneinander getrennt ! Davon bin ich ausgegangen weil du deinen Text nicht mit Code-Tags gepostet hast!
Du musst schon deinen Text mit Code-Tags für deinen Quellcode: <code> Quellcode </code> posten ....

In Zeile 15 lässt sich das anpassen.
Member: VBANeuling2015
VBANeuling2015 Sep 08, 2015 at 08:32:39 (UTC)
Goto Top
planid	partnb	id	type	idsymbol	actual	nominal	uppertol	lowertol	deviation	exceed	warningLimitCF	featureid	featuresigma	comment	link	linkmode	mmc	useruppertol	userlowertol	fftphi	fftphiunit	zoneroundnessangle	groupname	groupname2	datumAid	datumBid	datumCid	natuppertolid	natlowertolid	decimalplaces	featurePosX	featurePosY	featurePosZ	group1	group2	group3	group4	group5	group6	group7	group8	group9	group10	
6442_Aktuatorring	1057	Ebenheit_A	Ebenheit	gdtFlat	0.0058618	0.0000000	0.0150000	0.0000000	0.0058618		100.0000000	Ebene_Fläche A	0.0018273					0.0150000	0.0000000									1	2	3	0.0011110	0.0004896	0.0003756
END
Mitglied: 114757
114757 Sep 08, 2015 at 08:33:03 (UTC)
Goto Top
Wenn deine Spalten mit Tabs voneinander getrennt sind muss Zeile 15 so lauten
 arrCols = Split(Split(fso.OpenTextFile(file, 1).ReadAll(), vbNewLine)(1), vbTab)
Member: VBANeuling2015
VBANeuling2015 Sep 08, 2015 at 08:33:03 (UTC)
Goto Top
Für mich Sieht das wie ein Tabulator aus
Member: VBANeuling2015
VBANeuling2015 Sep 08, 2015 at 08:34:21 (UTC)
Goto Top
Habs selbst rausgefunden vbTab ist die Lösung!

face-smile

Vielen Dank an dich!
Member: VBANeuling2015
VBANeuling2015 Sep 08, 2015 at 08:34:47 (UTC)
Goto Top
Kannst du mir eine Lektüre zu VBA empfehlen? Möchte gerne was dazulernen face-smile
Mitglied: 114757
114757 Sep 08, 2015 at 08:35:43 (UTC)
Goto Top
Mitglied: 114757
114757 Sep 08, 2015 at 09:26:34 (UTC)
Goto Top
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Danke.