Seite 1 von 1

WRITER: Nummerierung erzeugen

Verfasst: Fr, 25.05.2012 10:20
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

Re: WRITER: Nummerierung erzeugen

Verfasst: Fr, 25.05.2012 12:14
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

Re: WRITER: Nummerierung erzeugen

Verfasst: Fr, 25.05.2012 14:33
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ß

Re: WRITER: Nummerierung erzeugen

Verfasst: Fr, 25.05.2012 15:46
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