Hallo,
ich beschäftige mich erst seit gestern mit Makros und VBA und habe mithilfe von Google und Beispiel-Codeschnipseln etwas hingebastelt,
dass im Ansatz funtioniert aber noch nicht so richtig.
folgendes Problem:
ich möchte aus einer Textdatei (.txt) mehrer bestimmte Werte auslesen und diese untereinader in Excel eintragen lassen.
Die Textdatei ist in etwa so aufgebaut (vereinfacht):
Prüfplanname / Zeichnungsnummer Datum
XD_1087_6932 Palette V0 Korrektur D18 19 April 2023
Bezeichnung KMG Uhrzeit Auftrag
XD.1087.6932 Palette C16Bit 23:00:00 6240224_10
Prüfer Kunde Teilnummer inkremental
Reichelt MAG IAS GmbH 051
Istwert Sollwert Obere Tol. Untere Tol. Abweichung
DF |----
0.015 0.000 0.015 0.015
Dm 42 H6 |-
42.010 42.000 0.016 0.010 0.000
X-Wert Kreis_A1 |-
199.999 200.000 0.010 -0.001 -0.010
Z-Wert Kreis_A1 |-
225.002 225.000 0.010 0.002 -0.010
X-Wert Kreis_A2 --|
174.998 175.000 0.010 -0.002 -0.010
Z-Wert Kreis_A2 |--
225.005 225.000 0.010 0.005 -0.010
.
.
.
.
X-Wert Kreis_K11 |
174.998 175.000 0.010 0.002 -0.010
Z-Wert Kreis_K11 |--
225.005 225.000 0.010 0.005 -0.010
es werden am Ende ca 85 Werte sein die ausgelesen werden.
ich möchte die rotmarkierten Werte gern nacheinander auslesen und eintragen. Das auslesen habe ich mir jetzt schon hingebstastelt. Wahrscheinlich nicht sehr elegant, aber laut regex101 funktioniert es, dass er alle Werte erkennt.
Nur Eintragen schaffe ich noch nicht, da er mir immer nur den ersten gefundenen Wert in alle Zellen einträgt.
Vielleicht könnt ihr mir einen Tipp geben, wie in etwa ich das angehen muss.
Hier der Code:
Sub ReadPDFFile()
Dim WSHShell As Object
Dim FSO As Object
Dim regex As Object
Dim strCommand, pdfFilePath, txtFilePath, strText, txt As String
On Error GoTo ErrorHandling
Set WSHShell = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
'Pfad der Textdatei bestimmen und Textdatei auslesen
txtFilePath = "C:\Users\fraesen\Desktop\XD_1087_6932 Palette V0 Korrektur D18_051_gra.txt"
strText = FSO.OpenTextFile(txtFilePath).ReadAll
'Text mit regex parsen
Set regex = CreateObject("vbscript.regexp")
regex.Pattern = "X-Wert Kreis_..{1,2}\s\W{1,4}[\r\n]\s\W{0,1}\d{2,3}.\d{1,3}\s\d{2,3}.\d{1,3}\s0.010\s(\W{0,1}\d.\d{1,4})"
Set match1 = regex.Execute(strText)
If match1.Count > 0 Then
txt = match1(0)
Dim WertEins As String
Dim WertZwei As String
WertEins = txt
WertZwei = Right(WertEins, 6)
txt = WertZwei
'in Excel-Zelle einfügen
Dim cellRange As Range
Set cellRange = Range("C3:C6")
cellRange.Value = txt
End If
'Textdatei nach getaner Arbeit wieder löschen
'Kill (txtFilePath)
Set regex = Nothing
Set WSHShell = Nothing
Set FSO = Nothing
Exit Sub
ErrorHandling:
'Ein paar Bereinigungen durchführen, falls es zu einem Fehler kommt
'Kill (txtFilePath)
Set regex = Nothing
Set WSHShell = Nothing
Set FSO = Nothing
End Sub
Vielen Dank schon
Grüße David
|