Liste im Writer-Dokument abfragen zu auszugeben?
Moderator: Moderatoren
Liste im Writer-Dokument abfragen zu auszugeben?
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
Ich bin dankbar für eure Hilfe!
Gruß
Tommy
Hey Tommy,
Gruss
Thomas
Welche Liste? kannst du das etwas genauer beschreiben?....wie die Liste im Writer-Dokument.....
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
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:
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
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
Gruß
Stephan
Du sollst/mußt der/den Liste(n) eine Absatzformatvorlage (evtl. incl. Nummerierungsvorlage) Deiner Wahl zuweisen und das im Makro entsprechend ändern.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
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
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?
Gruß
Tommy
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
Tommy
Hallo Tommy,
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
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.Ich denke, es gibt dann Problem, nämlich es funktioniert nicht, wenn der Makro unter engl. OO-Version ausgeführt wird, oder?
Die Zahlenwerte kann ich auf einem deutschen OOo nicht nachvollziehen, nehme aber an das sie richtig sind.Mit folgenden Code habe ich erfahren, dass NumberingStyleName der Nummerierung eine Zahl 332253891 hat und der der Aufzählungsliste eine Zahl 332253892 hat.
Ja, im Prinzip schon.Mit dieser Zahlen kann man dann abfragen, ob es in Writer-Dokument Liste gibt. Siehst du auch so?
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
Hi Stephan,
Danke noch mal für Deine Hinweise!
Gruß
Tommy
Du hast recht... Ich habe derzeit keine englische Version zur Hand, sehe aber nicht warum es nicht funktionieren sollte...
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.... (Überschriften z.B. tragen meist eine Nummerierung und soweit die Formatvorlage der Überschrift eine Nummerierungsvorlage beinhaltet wird sie von Deinem Makro auch gefunden)...
Danke noch mal für Deine Hinweise!
Gruß
Tommy