Thema Datum  Von Nutzer Rating
Antwort
Rot TXT auslesen über mehrere Zeilen
17.06.2015 17:26:55 Sönke
NotSolved

Ansicht des Beitrags:
Von:
Sönke
Datum:
17.06.2015 17:26:55
Views:
1402
Rating: Antwort:
  Ja
Thema:
TXT auslesen über mehrere Zeilen

Moin,

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

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot TXT auslesen über mehrere Zeilen
17.06.2015 17:26:55 Sönke
NotSolved