ich habe folgendes Problem: In einem Dokument sind verschiedene "Platzhalter" in der Form "þ00001" u.ä. Diese sollen durch bestimmte Werte ersetzt werden. þ00001 ist z.B. der Vorname, þ00002 ist der Nachname etc. Das funktioniert auch alles soweit ganz gut. Der Code dafür ist folgender:
[...]
Set mSearch = Doc.createSearchDescriptor()
mSearch.SearchRegularExpression = True
mSearch.searchString = "þ[0-9]{5}" ' Suche mit Regulärem Ausdruck nach Platzhaltern
Set mFoundAll = Doc.findAll(mSearch)
For i = 0 To mFoundAll.Count - 1
tmpStr = mFoundAll.getByIndex(i).String
tmpPlh = Val(Right$(tmpStr, 5)) ' Platzhalterzeichen abschneiden
mFoundAll.getByIndex(i).String = GetPlatzhalterwert(tmpPlh)
Next i
[...]
Ds Problem ist nun: Ein bestimmter Platzhalter soll keinen bestimmten Wert einfügen, sondern eine Nummerierung erzeugen. Also als wenn man den Platzhalter manuell aus dem Dokument löscht und anschließend oben auf "Nummerierung" klickt. Den Klick auf Nummerierung hab ich mir auch als Makro aufgezeichnet, aber der Cursor steht ja nicht an der Fundstelle im Dokument... Wie bekomme ich das hin?
Schönen Gruß,
Stefan
Moderation,4: verschoben in BASIC-Unterbereich, wo alle Makro-Fragen hin gehören; Betreff angepasst
zum Verständnis: die Funktion "GetPlatzhalterwert" liefert mir anhand der Nummer den Wert. Wenn ich ihr z.B. "00001" übergebe, liefert sie "Stefan" zurück... Das funktioniert ja auch soweit.
Sagen wir mal, der Platzhalter þ00005 soll die Nummerierung auslösen. Er kann mehrfach im Dokument vorkommen, z.B. so:
-----------------------------------------
Voraussetzungen:
þ00005 Testtext
þ00005 noch ein Testtext
-----------------------------------------
Herauskommen soll folgendes:
-----------------------------------------
Voraussetzungen:
1. Testtext
2. noch ein Testtext
-----------------------------------------
Natürlich kann ich im Code eine Variable hochzählen, aber dann fehlen mir die Einrückungen, die eine "echte" Nummerierung hat. Daß also der komplette Absatz dahinter entsprechend eingerückt wird.
Sub search_to_numberstyle
doc = ThisComponent
Set mSearch = Doc.createSearchDescriptor()
mSearch.SearchRegularExpression = True
mSearch.searchString = "þ[0-9]{5}"
' Suche mit Regulärem Ausdruck nach Platzhaltern
mFoundAll = Doc.findAll(mSearch)
For i = 0 To mFoundAll.Count - 1
mFoundAll.getByIndex(i).string = ""
mFoundAll.getByIndex(i).NumberingStyleName = "Nummerierung 1"
Next i
End Sub
Falls du unterschiedlichen Suchstrings jeweils eine individuelle Nummerierung verpassen willst, musst du:
a. die gewünschte Nummerierungsvorlage mit unterschiedlichen Namen klonen.
b. in der For-schleife abhängig vom gefundenen String unterschiedliche Vorlagen zuweisen
Karo
LO7.4.7.2debian 12(bookworm) auf Raspberry5 8GB (ARM64) LO25.2.3.2 flatpakdebian 12(bookworm) auf Raspberry5 8GB (ARM64)