WRITER: Nummerierung erzeugen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

MNZL
Beiträge: 2
Registriert: Fr, 25.05.2012 10:09

WRITER: Nummerierung erzeugen

Beitrag von MNZL »

Hallo zusammen,

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:

Code: Alles auswählen

  [...]
  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
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: WRITER: Nummerierung erzeugen

Beitrag von Karolus »

Hallo
Mglw. versteh ich nicht was du mit "Nummerierung einfügen" meinst, aber wenn du deine vorletzte Codezeile reduzierst auf:

Code: Alles auswählen

mFoundAll.getByIndex(i).String = tmpPlh
...hast du doch deine "Nummerierung" ?

Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
MNZL
Beiträge: 2
Registriert: Fr, 25.05.2012 10:09

Re: WRITER: Nummerierung erzeugen

Beitrag von MNZL »

Hi Karo,

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.

Hat jemand eine Idee?

Schönen Gruß
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: WRITER: Nummerierung erzeugen

Beitrag von Karolus »

Hallo
Möchtest du den Absätzen mit den Fundstellen eine Nummerierungsvorlage zuweisen ? →

Code: Alles auswählen

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.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Antworten