Hi,

Meine Lösung wie folgt:

a)
Am Beginn des Makros, die Eckdaten aller Bilder in eine Hash-Table eintragen.
Sheet+Zeile+Spalte dienen als HashIndex und der Index der Graphik in oDrawPage
(getByIndex(i)) als Daten der Hash-Table
b)
im restlichen Macro kann dann über Sheet+Zeile+Spalte in der Hash-Table direkt
auf den Graphik-Index zugegriffen werden.

Sheet,Zeile,Spalte müssen natürlich mit einem Trennzeichen getrennt werden, um
die Eindeutigkeit zu bewahren - ist aber eh' logisch.

Im folgenden Lösungsteil habe ich mir mit einer "Pfusch-Pseudo"-Hashtabelle
geholfen, in der in einem String pro Bild eine Kette von ";Sheet,Row,Col;i;"
eingetragen wird, weil es mir leider bisher nicht gelungen ist herauszufinden,
wie man eine echte Hashtabelle (+untergeordneten Arrays) im Starbasic aufbauen
kann (ein [ vielleicht besseres :-) ] Äquivalent zu "Collection" von VBA?).

Diese Lösung kann nicht damit umgehen, wenn einer Zelle mehrere Anker zugeordnet
sind. Da wird dann immer nur das erste Bild zurückgeliefert.
Das einzig wirklich Wahre wäre natürlich eine Hashtabelle, die als Datenteil
nicht den Index eines einzigen Bildes hat, sondern in der der Datenteil ein
Array ist, das Referenzen auf die Bildobjekte enthält. Dann nämlich könnte das
Ding auch damit umgehen, wenn einer Zelle mehrere Bilder zugeordnet sind.

<SCHNIPPEL>
...
sGraphAddrs = ""
oDrawPage = ThisComponent.Sheets.getByName("Tabelle1").DrawPage
for i=0 to oDrawPage.getCount()-1
   oGraph = oDrawPage.getByIndex(i)
   oCell = oGraph.Anchor.CellAddress
   sSchluessel = ";"+oCell.Sheet+","+oCell.Row+","+oCell.Column+";"+i+";"
   sGraphAddrs = sGraphAddrs+sSchluessel
next

Sheet = 0
for Zeile = 0 to 10
   for Spalte = 0 to 10

      sSchluessel = ";"+Sheet+","+Zeile+","+Spalte+";"
      iFndPos = Instr(sGraphAddrs, sSchluessel)
      If iFndPos > 0 Then
         sTmp = mid(sGraphAddrs, iFndPos+Len(sSchluessel))
         sTmp = left(sTmp, Instr(sTmp,";")-1)
         i = val(sTmp)
         oGraph = oDrawPage.getByIndex(i)
         sURL = oGraph.GraphicURL
         msgBox "Graphikanker in Zeile "+Zeile+"/Spalte "+Spalte+chr(10)+sUrl
      else
         sURL = "<kein Graphikanker Zeile "+Zeile+"/Spalte "+Spalte+">"
      End If

   next
next
...
</SCHNIPPEL>

Bis dann
   Manfred


Jörg Schmidt wrote:
> Hallo,
> 
> Manfred Jedlicka schrieb:
>> ich denke mir das etwa so:
> 
> Ja, das war mir schon klar (vielleicht schlecht formuliert meinerseits),
> aber Deine Anforderung war ursprünglich so gestellt:
> 
>> Via Macro möchte ich nun die Tabelle zeilen- und spaltenweise
> abarbeiten und,
>> wenn in einer Zelle ein Anker eines eingefügten Bildes existiert,
> 
> und ich hoffte Du hättest dafür nun eine Lösung.
> Das Abarbeiten über die Drawpage ist nämlich nicht zeilen- und
> spaltenweise sondern in Indexreihenfolge der Bilder, wie dabei die
> Reihenfolge in Zeilen und Spalten ist ist (zumindest meiner Meinung
> nach) zufällig, es sei denn Du hättest die Einfügereihenfolge der Bilder
> im Vorhinein so gewählt das es zufällig mit der Reihenfolgeabstimmung
> zwischen Bildindex und Zeile/Spalte stimmt.
> Ich sehe einfach keinen Weg die Verankerung aus Sicht der Zelle zu
> bestimmen, denke das sollte über com.sun.star.sheet.CellFlags gehen, tut
> es aber nicht.
> 
> 
> Gruß
> Jörg
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Antwort per Email an