Aktualisierung der Graphiken nach erstem Makrolauf

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

Moderator: Moderatoren

sarotti
****
Beiträge: 105
Registriert: So, 12.03.2006 17:40
Wohnort: Nähe Krefeld

Aktualisierung der Graphiken nach erstem Makrolauf

Beitrag von sarotti »

Hallo zusammen,

folgendes Problem:

Ich lese per Schleife alle verknüpften Graphiken aus dem aktiven Textdokument aus und füge am Ende des Dokumentes eine Liste der URL´s ein. Soweit so gut. Ändere ich aber die Reihenfolge der Graphiken im Textdokument wird bei nochmaligem starten des Makros immer noch die ursprüngliche Reihenfolge gelistet. Habe leider keine Idee, wie man OO dazu bringt die Bilder bei nochmaligem Star noch einmal neu einzulesen....

Hier mein Code:

Sub Grafiken_auslesen
Dim odoc as Object, grafiken as object, oURL as object, oTxt as Object
Dim s as string

odoc=thisComponent
grafiken=odoc.getGraphicObjects()

REM Bilder in einer Schleife auslesen

s = Chr(13) & " Verzeichnis der Bildreferenzen:" & CHR(13) & CHR(13)

for i= 0 to grafiken.count -1
oURL = grafiken.getByIndex(i)
BildURL = oURL.graphicUrl
'es folgt die Prüfung, ob das Bild als Kopie eingefügt wurde
sKopie= left(BildURL,3)
if sKopie = "vnd" then
BildURL="+ + + + + + + A C H T U N G: Das Bild wurde als Kopie eingefügt! + + + + + + + + +"
end if
s = s & "Abb." & i+1 & " : " & BildURL & chr(13) '& oURL.name & " - "
next

REM Einfügen am Ende des Textes

oTxt = oDoc.text
oTxt.insertString(oTxt.getEnd(), s + chr(13) + "Ende Bildreferenzen", False)
oTxt.insertControlCharacter(oTxt.getEnd(), com.sun.star.text.ControlCharacter.APPEND_PARAGRAPH, False)
oDoc.refresh()

msgBox "Bildreferenzen am Ende des Dokuments eingefügt", 64, "Bilder auslesen aus Text"

End Sub

Danke für die Hilfe.......

Gruß
sarotti
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey sarotti,
Habe leider keine Idee, wie man OO dazu bringt die Bilder bei nochmaligem Star noch einmal neu einzulesen....
Das tut das Makro! Die Probelmatik ist eine andere: Bilder oder Grafiken werden nicht in Ihrer Abfolge innerhalb des Dokumentes "nummeriert" sondern zum Zeitpunkt des Entstehens (des Objektes). Das heisst, die von dir verwendete Methode (Schleife über alle Grafikobjekte) gibt nur in einem Ausnahmefall genau die physikalische Reihenfolge der Grafiken wieder, in der Regel hat das damit gar nichts zu tun.
Um die "echte" Reihenfolge herauszubekommen, müsstest du viel mehr "Tricks" anwenden. Nur der aktuelle Controller "weiss" nämlich, wo die Bilder liegen. Hier müsstest du Seite für Seite durchgehen und nach den Grafikobjekten "fahnden". Alternativ liesse sich das viellcht auch über den Ankerpunkt lösen - falls sie am Absatz verankert wurden: alle Textabsätze durchgehen und die Ankermarken jetzt in eine Reihenfolge bingen. Wobei - auch diese Methode ist nicht sicher, kann man doch eine Grafik am Absatz verankern, dann aber dennoch unterhalb einer Folgegrafik plazieren. - Tia, bleibt wohl doch nur: Position jeder Grafik auslesen (Seite und x/y-Wert) und über diese Werte die Reihenfolge bestimmen.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
sarotti
****
Beiträge: 105
Registriert: So, 12.03.2006 17:40
Wohnort: Nähe Krefeld

Beitrag von sarotti »

Hi Thomas,

danke für die Antwort. O.K., wenn das Ganze so aufwendig ist, bleibt ja noch eine Alternative: Ich lese die URL aus und schließe das Dokument, um es direkt wieder zu öffnen. Dann bin ich auf jeden Fall sicher, dass die Reihenfolge stimmt (...das wäre dann Dein Ausnahmefall :D )

Trotzdem vielen Dank

Gruß
sarotti
Antworten