Was den Fehler in meinem Code erzeugt weiß ich nicht, Deine Ausführungen lassen jedoch darauf schließen das die Variable 'aktuell' schon anders definiert ist, wobei ich die Fehlermeldung an sich (in diesem Zusammenhang) nicht verstehe ??
Mein Code sollte die Anzahl der Grafiken liefern welche unter Dateieigenschaften/Statistik aufgeführt wird. Aber ebend diese und nicht so etwas in dem Sinne wie Anzahl der sichtbaren Bilder, weil zumindest bestimmte OLE-Objekte (welche Bilder repräsentieren) wie Bilder aussehen, aber KEINE Grafiken in der hier zugrundeliegenden Terminologie sind...
Die Vorletzte Zeile hatte ich eingefügt, weil mir der Zähler zu weit lief.
Es geht einmal um Anzahl (= Zahl) und einmal um Index (= Zählung beginnend bei 0)
In der Art und Weise wie Du das Einfügen vornimmst kannst Du Dir die Zählung auch sparen, weil das so nicht in Zusammenhang steht. (Deine Annahme aus dem ganz ersten Post ist dem Grunde nach falsch, was ich vergessen hatte zu erwähnen, im Speziellen liefert sie das richtige Ergebnis - jedoch nur weil alle Felder des Nummernkreises bei den Grafiken stehen. Du erhälst also tatsächlich die "Anzahl der beschrifteten Grafiken") Die Gründe:
Die Zählung der Grafiken zählt (wie auch immer) die Grafiken, es ist nicht möglich zu unterscheiden ob eine Grafik eine Beschriftung hat oder nicht, soweit man hierzu das Grafik-Objekt heranzieht. Es gibt keine boolsche Eigenschaft in dem Sinne "hat Beschriftung" (True/False) und auch folglich keine Eigenschaft "Inhalt der Beschriftung". Die Beschriftungen stellen ausschließlich Text in einem Textrahmen dar. Die automatisch erzeugte Nummer (Nummernkreis: Abbildung) ist nur Abhängig von der Position dieses Elements in Dokument und nicht ob es "bei einer Grafik" steht.
Um die Beschriftungen der Grafiken auszulesen mußt Du deshalb auf die entsprechenden Textrahmen zugreifen und deren Textinhalt lesen. Falls es außer den Textrahmen die die Beschriftungen enthalten keine weiteren gibt ist das einfach:
Code: Alles auswählen
Sub getFramesPages
oDocument = StarDesktop.CurrentFrame.Controller.Model
oFrames = oDocument.getTextFrames
for i = 0 to oFrames.Count -1
oFrame = oFrames(i)
Cursor = oFrame.createTextCursor
Cursor.gotoEndOfParagraph (False)
Cursor.gotoStartOfParagraph (true)
msgbox Cursor.String
next i
end sub
Gibt es jedoch weitere Rahmen mußt Du ein Entscheidungskriterium finden. Ein hinreichend sicheres Kriterium wäre das die Beschriftung eine Standardfloskel z.B. "Abbildung" an definierter Position enthält. Die sichere Möglichkeit ist es alle Elemente des Rahmens auszuwerten (und somit festzustellen das er tatsächlich Grafik enthält und Möglichkeit der Verifizierung an Hand deren Eigenschaften), es gibt hier einen Beispielcode
http://www.oooforum.org/forum/viewtopic ... ht=graphic der bei mir in vorhandener Form nicht läuft, aber das Prinzip erkennen läßt.
Außerdem ist gerade aufgefallen, dass die Reihenfolge der mit Code:
dispatcher.executeDispatch(documentInsertArea, ".uno:InsertField", "", 0, args5()
eingefügten Verweise etwas nicht stimmt.
1,2,3,4,6,7,8,...,52,53,5,54,55,.... Grr. Muss ich jetzt die Daten erst noch sortieren?! Wo ich wieder bei meinem Problem der Datenstrukturen bin
Ich habe nicht intensiv darüber nachgedacht, aber das sollte seine Ursache darin haben das die auf die Grafiken weisenden Referenzen alphabetisch sortiert sind und ihre Reihenfolge nicht in direkten Zusammenhang mit den Index der Grafiken steht - das ist zunächst nur meine Vermutung.
Ich nehme an Du hast, aber trotzdem: Hast Du an die normale Erzeugung eines Abbildungsverzeichnisses gedacht?
Gruß
Stephan
Was den Fehler in meinem Code erzeugt weiß ich nicht, Deine Ausführungen lassen jedoch darauf schließen das die Variable 'aktuell' schon anders definiert ist, wobei ich die Fehlermeldung an sich (in diesem Zusammenhang) nicht verstehe ??
Mein Code sollte die Anzahl der Grafiken liefern welche unter Dateieigenschaften/Statistik aufgeführt wird. Aber ebend diese und nicht so etwas in dem Sinne wie Anzahl der sichtbaren Bilder, weil zumindest bestimmte OLE-Objekte (welche Bilder repräsentieren) wie Bilder aussehen, aber KEINE Grafiken in der hier zugrundeliegenden Terminologie sind...
[quote]Die Vorletzte Zeile hatte ich eingefügt, weil mir der Zähler zu weit lief.[/quote]
Es geht einmal um Anzahl (= Zahl) und einmal um Index (= Zählung beginnend bei 0)
In der Art und Weise wie Du das Einfügen vornimmst kannst Du Dir die Zählung auch sparen, weil das so nicht in Zusammenhang steht. (Deine Annahme aus dem ganz ersten Post ist dem Grunde nach falsch, was ich vergessen hatte zu erwähnen, im Speziellen liefert sie das richtige Ergebnis - jedoch nur weil alle Felder des Nummernkreises bei den Grafiken stehen. Du erhälst also tatsächlich die "Anzahl der beschrifteten Grafiken") Die Gründe:
Die Zählung der Grafiken zählt (wie auch immer) die Grafiken, es ist nicht möglich zu unterscheiden ob eine Grafik eine Beschriftung hat oder nicht, soweit man hierzu das Grafik-Objekt heranzieht. Es gibt keine boolsche Eigenschaft in dem Sinne "hat Beschriftung" (True/False) und auch folglich keine Eigenschaft "Inhalt der Beschriftung". Die Beschriftungen stellen ausschließlich Text in einem Textrahmen dar. Die automatisch erzeugte Nummer (Nummernkreis: Abbildung) ist nur Abhängig von der Position dieses Elements in Dokument und nicht ob es "bei einer Grafik" steht.
Um die Beschriftungen der Grafiken auszulesen mußt Du deshalb auf die entsprechenden Textrahmen zugreifen und deren Textinhalt lesen. Falls es außer den Textrahmen die die Beschriftungen enthalten keine weiteren gibt ist das einfach:
[code]Sub getFramesPages
oDocument = StarDesktop.CurrentFrame.Controller.Model
oFrames = oDocument.getTextFrames
for i = 0 to oFrames.Count -1
oFrame = oFrames(i)
Cursor = oFrame.createTextCursor
Cursor.gotoEndOfParagraph (False)
Cursor.gotoStartOfParagraph (true)
msgbox Cursor.String
next i
end sub[/code]
Gibt es jedoch weitere Rahmen mußt Du ein Entscheidungskriterium finden. Ein hinreichend sicheres Kriterium wäre das die Beschriftung eine Standardfloskel z.B. "Abbildung" an definierter Position enthält. Die sichere Möglichkeit ist es alle Elemente des Rahmens auszuwerten (und somit festzustellen das er tatsächlich Grafik enthält und Möglichkeit der Verifizierung an Hand deren Eigenschaften), es gibt hier einen Beispielcode http://www.oooforum.org/forum/viewtopic.php?t=12507&highlight=graphic der bei mir in vorhandener Form nicht läuft, aber das Prinzip erkennen läßt.
[quote]Außerdem ist gerade aufgefallen, dass die Reihenfolge der mit Code:
dispatcher.executeDispatch(documentInsertArea, ".uno:InsertField", "", 0, args5()
eingefügten Verweise etwas nicht stimmt.
1,2,3,4,6,7,8,...,52,53,5,54,55,.... Grr. Muss ich jetzt die Daten erst noch sortieren?! Wo ich wieder bei meinem Problem der Datenstrukturen bin [/quote]
Ich habe nicht intensiv darüber nachgedacht, aber das sollte seine Ursache darin haben das die auf die Grafiken weisenden Referenzen alphabetisch sortiert sind und ihre Reihenfolge nicht in direkten Zusammenhang mit den Index der Grafiken steht - das ist zunächst nur meine Vermutung.
Ich nehme an Du hast, aber trotzdem: Hast Du an die normale Erzeugung eines Abbildungsverzeichnisses gedacht?
Gruß
Stephan