ich bräuchte mal ne kleine Hilfe: Ich möchte gerne Daten aus einer txt Datei auslesen mittels VBA. Generell bekomme ich das auch hin, allerdings ist jetzt mein Problem, wenn ich in einer Zeile ein bestimmtes Wort finde, soll er die nächsten Zeilen auslesen bis wieder ein bestimmtes Wort kommt.
Sub Schaltfläche3_KlickenSieAuf()
' Option Explicit setzt die Deklaration aller Variablen voraus
Const ForReading = 1, ForWriting = 2 'Deklaration konstanter Variablen zum Lesen und Schreiben
Dim fso, objEingabe, objAusgabe, m, p, WriteLine ' Variablendeklaration
Dim AusgabePfad, AusgabeDatei, EingabePfad, EingabeDatei, ZeileTemp, Position, i 'Variablendeklaration
Dim TestString
Dim Pos1
Dim Pos2
Dim TextZwischenAnfuehrungszeichen
Dim ZweiterText
EingabePfad = "d:\master\" 'Ordner in dem zu scannende Datei ist
EingabeDatei = "Bauteil1.txt" 'Zu scannende Datei
AusgabePfad = "d:\master\" 'Ordner in dem die neue .txt-Datei erstellt werden soll
AusgabeDatei = "New3.txt" 'Neu zu erstellende AusgabeDatei
Set fso = CreateObject("Scripting.FileSystemObject")
Set objEingabe = fso.OpenTextFile(EingabePfad & EingabeDatei, 1) ' Öffnen der .txt-Datei zum Lesen
Set objAusgabe = fso.OpenTextFile(AusgabePfad & AusgabeDatei, 2, True) 'Öffnen der .txt-Datei zum Schreiben
Do Until objEingabe.AtEndOfStream
ZeileTemp = objEingabe.Readline ' Liest Datei Zeile für Zeile bis Ende
If InStr(1, ZeileTemp, "=B_SPLINE_CURVE_WITH_KNOTS($,3,", vbTextCompare) > 0 Then 'Überprüft Zeile für Zeile ob "object operation" vorkommt
Pos1 = InStr(1, ZeileTemp, "(", vbTextCompare) 'Ermittelt Position vom ersten Zeichen
Pos2 = InStr(1, ZeileTemp, ")") 'Ermittelt Position vom zweiten Zeichen
If Pos2 > 0 Then
TextZwischenAnfuehrungszeichen = Mid(ZeileTemp, Pos1 + 2, Pos2 - Pos1 - 2) ' Text zwischen 1. und 2. "
objAusgabe.WriteLine (TextZwischenAnfuehrungszeichen) 'Gibt ausgewählte Strings in neue text-Datei
End If
End If
Loop
objEingabe.Close
objAusgabe.Close
End Sub
So kann ich zumindest eine txt auslesen und in die nächste Schreiben:
Jetzt mal ein Ausschnitt aus der Datei, welche ich auslesen möchte:
#47=B_SPLINE_CURVE_WITH_KNOTS($,3,(#4445,#4446,#4447,#4448,#4449,#4450,
#4451,#4452,#4453,#4454,#4455,#4456,#4457,#4458,#4459,#4460,#4461,#4462,
#4463,#4464,#4465,#4466,#4467,#4468,#4469,#4470,#4471,#4472,#4473,#4474,
#4475,#4476,#4477,#4478,#4479,#4480,#4481,#4482,#4483,#4484,#4485,#4486,
#4487,#4488,#4489,#4490,#4491,#4492,#4493,#4494,#4495,#4496,#4497,#4498,
#4499,#4500,#4501,#4502,#4503,#4504,#4505,#4506,#4507,#4508,#4509,#4510,
#4511,#4512,#4513,#4514,#4515,#4516,#4517,#4518,#4519,#4520,#4521,#4522,
#4523,#4524,#4525,#4526),.UNSPECIFIED.,.F.,.F.,(4,3,3,3,3,3,3,3,3,
Startwort soll B_SPLINE_CURVE_WITH_KNOTS($,3, sein und das Auslesen beenden soll er bei ),.UNSPECIFIED.,.
Richtig, richtig gut wäre noch die Zahlen mit # untereinander in eine neue Textdatei zu schreiben.
Ich hoffe, mir kann jemand helfen