Seite 1 von 1
Liste im Writer-Dokument abfragen zu auszugeben?
Verfasst: Fr, 30.07.2004 16:16
von tommy
Hallo, weiß jemand wie die Liste im Writer-Dokument durch ein Makro abgefragt und deren Inhalte ausgegeben werden können?
Ich bin dankbar für eure Hilfe!
Gruß
Tommy
Verfasst: Fr, 30.07.2004 20:54
von Toxitom
Hey Tommy,
....wie die Liste im Writer-Dokument.....
Welche Liste? kannst du das etwas genauer beschreiben?
Gruss
Thomas
Verfasst: Sa, 31.07.2004 17:09
von tommy
Hi Thomas,
Welche Liste? kannst du das etwas genauer beschreiben?
Ich meinte die Nummerierung und die Aufzählungsliste.
Gruß
Tommy
Verfasst: So, 01.08.2004 10:56
von Stephan
Listen sind aufeinanderfolgende Absätze mit bestimmter Formatvorlage, ich weiß im Moment nicht ob auch ein direkter Zugriff im Sinne eines "Listenobjektes" möglich ist. Ein Zugriff über die Formatvorlage ist beispielsweise so möglich:
Code: Alles auswählen
Sub Macro1
Dim Doc As Object
Dim Enum As Object
Dim TextElement As Object
Doc = StarDesktop.CurrentComponent
Enum = Doc.Text.createEnumeration
While Enum.hasMoreElements
TextElement = Enum.nextElement
If TextElement.supportsService("com.sun.star.text.Paragraph") Then
'die auszugebenden Listen haben eine bestimmte Formatvorlage
'Hier wird "meinFormat" angenommen
If TextElement.ParaStyleName = "meinFormat" Then
ausgabe = ausgabe & TextElement.String & CHR(13)
End If
End If
Wend
msgbox ausgabe
End Sub
Existieren mehrere Listen gibt es zwischen ihnen mindestens einen Absatz anderer Formatierung, was dann zu prüfen und zu berücksichtigen wäre.
Gruß
Stephan
Verfasst: So, 01.08.2004 23:30
von tommy
Hi Stephan,
danke für den Hinweis, ich weiss immer noch nicht, welche Formatvorlage hat die Nummerierung bzw. Aufzählungsliste. Ich habe folgendes ausgeben gelassen TextElement.ParaStyleName, die Ausgabe ist Heading1 und Standard.
Gruß
Tommy
Verfasst: Mo, 02.08.2004 00:05
von Stephan
tommy hat geschrieben:Hi Stephan,
danke für den Hinweis, ich weiss immer noch nicht, welche Formatvorlage hat die Nummerierung bzw. Aufzählungsliste. Ich habe folgendes ausgeben gelassen TextElement.ParaStyleName, die Ausgabe ist Heading1 und Standard.
Gruß
Tommy
Du sollst/mußt der/den Liste(n) eine Absatzformatvorlage (evtl. incl. Nummerierungsvorlage) Deiner Wahl zuweisen und das im Makro entsprechend ändern.
Einerseits werden so die Listen durch das Makro erkannt, andererseits kannst Du damit auch steuern das nur bestimmte Listen ausgegeben werden. Wie Du möglicherweise schon erkannt hast besitzen die vorhandenen Vorlagen "englische" Namen, eigene Vorlagen sollten sich aber direkt über den von Dir vergebenen Namen ansprechen lassen.
Gruß
Stephan
Verfasst: Mo, 02.08.2004 17:07
von tommy
Hi Stephan,
danke für den Hinweis. Ich denke, es gibt dann Problem, nämlich es funktioniert nicht, wenn der Makro unter engl. OO-Version ausgeführt wird, oder?
Mit folgenden Code habe ich erfahren, dass NumberingStyleName der Nummerierung eine Zahl 332253891 hat und der der Aufzählungsliste eine Zahl 332253892 hat. Mit dieser Zahlen kann man dann abfragen, ob es in Writer-Dokument Liste gibt. Siehst du auch so?
Code: Alles auswählen
goEnum = goThisDoc.Text.createEnumeration
While goEnum.hasMoreElements()
goPara = goEnum.nextElement()
sStyleName = goPara.NumberingStyleName
if sStyleName<>"" then
MsgBox sStyleName
end if
wend
Gruß
Tommy
Verfasst: Mo, 02.08.2004 18:28
von Stephan
Hallo Tommy,
Ich denke, es gibt dann Problem, nämlich es funktioniert nicht, wenn der Makro unter engl. OO-Version ausgeführt wird, oder?
Hättest Du es ausprobiert wüßtest Du es. Ich habe derzeit keine englische Version zur Hand, sehe aber nicht warum es nicht funktionieren sollte WENN Du zusätzlich zum Code meine Hinweise im letzten Post beachtest.
Mit folgenden Code habe ich erfahren, dass NumberingStyleName der Nummerierung eine Zahl 332253891 hat und der der Aufzählungsliste eine Zahl 332253892 hat.
Die Zahlenwerte kann ich auf einem deutschen OOo nicht nachvollziehen, nehme aber an das sie richtig sind.
Mit dieser Zahlen kann man dann abfragen, ob es in Writer-Dokument Liste gibt. Siehst du auch so?
Ja, im Prinzip schon.
Wenn Du Deine Listen auf die genannte Weise 'hart' formatierst (und nicht mit Formatvorlagen), sollte das ohne Weiteres funktionieren - nur ein allgemeingültiger Weg ist das auch nicht. WAs ich sagen will ist nur das Du so nur speziell formatierte Listen finden kannst und anders formatierte ignoriert werden, was natürlich gar kein Problem ist wenn Du weißt wie die Formatierung ist. Das ist allerdings bei meinem Makro nicht anders.
Der Weg mit goPara.NumberingStyleName ist durchaus interessant, nur ist eben nicht alles was einen 'Nummerierungsstil' zurückgibt zwangsläufig eine Liste. (Überschriften z.B. tragen meist eine Nummerierung und soweit die Formatvorlage der Überschrift eine Nummerierungsvorlage beinhaltet wird sie von Deinem Makro auch gefunden). Solange Du nach einer ganz spezifischen Nummer suchst funktioniert das, aber ebend nur dann. Du mußt vorher wissen wonach Du suchst und eine spezifische Vorlage beim Schreiben zuweisen.
Solltest Du noch eine bessere Methode finden poste sie doch bitte ins Forum.
Gruß
Stephan
Verfasst: Di, 03.08.2004 15:06
von tommy
Hi Stephan,
.. Ich habe derzeit keine englische Version zur Hand, sehe aber nicht warum es nicht funktionieren sollte...
Du hast recht.
... (Überschriften z.B. tragen meist eine Nummerierung und soweit die Formatvorlage der Überschrift eine Nummerierungsvorlage beinhaltet wird sie von Deinem Makro auch gefunden)...
Sobald in dem Writer-Dokument Überschriften und Nummerierung vorhanden sind, werden ihr NumberingStyleName gleiche Zahl (324321231) ausgeben. Also habe ich Deinen Vorschlag gefolgt. Ich benutze jetzt selbst definierten Nummerierungsvorlagen. Jetzt kann man herausfinden, ob im Dokument Listen gibt. Die Inhalte der Listen können auch ausgegeben werden.
Danke noch mal für Deine Hinweise!
Gruß
Tommy