Seite 1 von 1

Wie fragt man die Existenz von Vorlagen ab?

Verfasst: So, 13.11.2005 09:03
von suavito
Ich habe ein umfangreiches Makro, mit dem ich u. a. Absatzvorlagen zuordne. Zum einen importiere ich ein Fast-ASCII-Format in OOo-Writer und wandle es per Makro um, zum anderen rufe ich ein (Teil-)Makro per Tastatur auf, um eine Absatzvorlage einzuschalten. (Die Einschaltung eines Absatzformates per Tastatur, wie sie Version 2.0 anbietet, verwende ich nicht, weil ich 2.0 erst seit kurzem installiert habe; außerdem ist mein Makro komplexer, es verwendet eine Wenn-Dann-Struktur, sodaß sich z. B. manche Absätze nicht innerhalb von Fußnoten oder Kopf/Fußtext einschalten lassen, weil sie da nicht hingehören etc.)

Dieses Makro möchte ich grundsätzlich immer geladen haben.

Allerdings kann es passieren, daß ich mit Dokumentvorlagen arbeite, in der die eine oder andere Absatzvorlage nicht vorhanden ist. Wenn ich dann versehentlich den Tastencode für dieses Makro drücke, bekomme ich natürlich eine Fehlermeldung und das Fenster mit den Makros erscheint.

Um das zu umgehen, möchte ich eine Sicherheitsabfrage einbauen:

WENN <Absatzvorlage x> in dieser Dokumentvorlage/in diesem Dokument vorhanden DANN schalte <Absatzvorlage x> ein (SONST gar nichts oder msgBox "Ham wa nich!")

Wie fragt man das Vorhandensein einer Absatzvorlage (auch: Seitenvorlage oder was es sonst noch so gibt) ab?

Verfasst: So, 13.11.2005 12:23
von Toxitom
Hey Suavito,
Wie fragt man das Vorhandensein einer Absatzvorlage (auch: Seitenvorlage oder was es sonst noch so gibt) ab?
Na, wenn du sie zuordnen kannst, dann weisst du das doch schon. Absatz- Zeichen und andere Vorlagen werden in einem Container gesammelt - und stehen dort namentlich zur Verfügung.
Da machst du eine Schleife, die alle entsprechenden Vorlagen durchläuft, vergleichst die entsprechenden Namen und verzweigst dann in deine gewünschte Richtung.

Beispiel für die Seitenformate:

Code: Alles auswählen

Sub Liste_Seitenformate
  Dim oStyleFam as Object, aName as Object, i%, s$
  oStyleFam = ThisComponent.getStyleFamilies()
  aName = oStyeFam.getByName("PageStyles").getElementNames()
  for i = lbound(aName) to ubound(aName)
    s = s & aName(i) & chr$(10)
  Next
  MsgBox s  'listet alle vorhanden Formate auf
  for i = lbound(aName) to ubound(aName)
    if aName(i) = "MeineSeitenVorlage" then 
         REM  tue etwas...
         REm  hier ist dein Code
    end if
  Next
End Sub
Und so kannst du das natürlich auch für die anderen Container machen.

Gruss
Thomas