Danke für die hilfreichen Antworten!
Habe die Funktion wie folgt angepasst und etwas erweitert. Jetzt läufts.
Option Explicit
Public Sub sucheP()
'Die Funktion sucht "(", schaut ob innerhalb der nächsten 7 Zeichen (Es werden jeweils max. (99,9P) verteilt)
'der Ausdruck "P)" vorkommt, extrahiert im Wahrheitsfall die Zahl dazwischen und addiert sie.
'Die Summe wird über MsgBox ausgegeben und die Liste in die Zwischenablage geschrieben.
Dim sAlltext As String, found As String
Dim s As Long, erg As Double
Dim liste As String
sAlltext = ActiveDocument.Content
s = 1
erg = 0
liste = ""
Do
s = InStr(s, sAlltext, "(", vbTextCompare)
If s = 0 Then Exit Do
If InStr(Mid(sAlltext, s, 7), "P)") > 0 Then
found = Mid(Mid(sAlltext, s, 7), 2, InStr(Mid(sAlltext, s, 7), "P)") - 2)
s = s + InStr(Mid(sAlltext, s, 7), "P)")
erg = erg + CDbl(found)
liste = liste & found & vbCr
Else: s = s + 1
End If
Loop Until s = 0
MsgBox ("Punkte: " & erg & vbCr & vbCr & "Liste in der Zwischenablage!")
'Liste in Zwischenablage schreiben
Dim IE As Object
Set IE = CreateObject("HTMLfile")
IE.ParentWindow.ClipboardData.SetData "text", liste & vbNullString
Set IE = Nothing
End Sub
|