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
Aktualisierung der Graphiken nach erstem Makrolauf
Moderator: Moderatoren
Hey sarotti,
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
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.Habe leider keine Idee, wie man OO dazu bringt die Bilder bei nochmaligem Star noch einmal neu einzulesen....
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
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
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
)
Trotzdem vielen Dank
Gruß
sarotti
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

Trotzdem vielen Dank
Gruß
sarotti