ich bin momentan an einem Makro, welches per pdftotxt.exe (Tool aus xpdfreader) aus einem Datenblatt (elektonische Bauelemente) eine Textdatei erstellt.
Diese möchte ich anschließend per Regex durchsuchen und die Werte in das Excel Dokument schreiben.
Mein Problem ist aber das jeder Hersteller ein anderes Format für die Darstellung seines Datenblatts verwendet.
Beispielhaft werde ich den RDSon eines FETs nehmen:
IRF:
RDS(on)        Static Drain-to-Source On-Resistance     ---       ---      0.025         VGS = 10V, ID = 29A         
infineon:
Drain-source on-state resistance       R DS(on)    V GS=4.5 V, I D=0.25 A      ---         2.0         4     
vishay:
Drain-Source On-Resistancea                            RDS(on)            VGS = 10 V, ID = 1.5 A                     0.195        0.250                            
oder
                                                                          VGS = 10 V, ID = 3 A                  0.064   0.080
Drain-Source On-Resistancea                   rDS(on)                                                                            W
                                                                          VGS = 4.5  V, ID = 2.5 A              0.103   0.140
Auslesen möchte ich natürlich den Widerstand und zwar immer den maximalen. Außerdem VGS und ID.
Das Problem ist auch, wie beim zweiten vishay zu sehen, dass es manchmal passiert, dass die Werte in der Zeile verrutschen aufgrund der Formatirung in der PDF.
Gibt es eine elegantere Lösung als das Textdokument per regex zu durchsuchen? Ich habe zwar einen Code der halbwegs funktioniert, jedoch nicht 100% zuverlässig. Aber auch nur wenn die Wetrte in einer Zeile stehen.
Mein Code für den RDSon sieht momentan zu aus (colTFile ist mein Textdokument, welcher aus der PDF erstellt wurde):
'RDS on auslesen
regex.Pattern = "[Dd]rain.*[Oo]n.*[Rr]es.*[^\n\r]+( {2,}([\d\.]{1,}) {2,})" 'Widerstand
Set matches = regex.Execute(FSO.OpenTextFile(colTFile.Item(1)).ReadAll)
If matches.Count > 0 Then
values(8) = matches(0).submatches(1)
End If
regex.Pattern = "[Dd]rain.*[Oo]n.*[^\n\r]+(=[ ]*([\d\.]{1,}) ?V)" 'Spannung
Set matches = regex.Execute(FSO.OpenTextFile(colTFile.Item(1)).ReadAll)
If matches.Count > 0 Then
zusatz(1) = matches(0).submatches(1)
End If
regex.Pattern = "[Dd]rain.*[Oo]n.*[^\n\r]+(=[ ]*([\d\.]{1,}) ?A)" 'Strom
Set matches = regex.Execute(FSO.OpenTextFile(colTFile.Item(1)).ReadAll)
If matches.Count > 0 Then
zusatz(2) = matches(0).submatches(1)
End If