Hallo,

John Kirste schrieb:
> nun habe ich Deinen Anfang geringfügig erweitert, um in eine Zelle
> etwas hinzuschreiben und erhalte regelmässig die
> Fehlermeldung "Typen
> unverträglich" :-(
>
> option explicit
> dim ser_man
> dim desk
> dim Doc
> dim Sheet
> dim Cell
> dim no_arg()
>
> Set ser_man = WScript.CreateObject("com.sun.star.ServiceManager")
> Set desk = ser_man.createInstance("com.sun.star.frame.Desktop")
> Set Doc = desk.loadComponentFromURL("private:factory/scalc",
> "_blank",0, no_arg)
> Set Sheet = Doc.Sheets(0)
> Set Cell = Sheet.getCellByPosition (1, 1)
> Cell.String = "HALLO"
>
>
>
> Was habe ich da übersehen? Ich stehe ein wenig auf dem Schlauch...

Ich denke Du hast nichts übersehen, einzig ist hier wohl die API wieder
etwas 'murksig'.


Die LÖsung ist das Du die 'Langform' des Zugriffes verwenden mußt, also:

statt:

Set Sheet = Doc.Sheets(0)

mußt du verwenden:

Set Sheet = Doc.Sheets.getByIndex(0)
oder:
Set Sheet = Doc.getSheets.getByIndex(0)

Du kannst Dich auch davon überzeugen das Du die Fehlermeldung deshalb
bekommst weil in:

> Set Cell = Sheet.getCellByPosition (1, 1)

garkein Zugriff auf das richtige Objekt besteht, weil hier von OOo
beliebige Ausdrücke der Zeile davor, z.B. selbst wenn die Mappe weniger
als 11 Blätter hat, der Ausdruck:

Set Sheet = Doc.Sheets(10)

nicht zu einem Fehler führt, sondern dieser quasi immer nur als
Doc.Sheets() verstanden wird.

z.B. würde dEin Code auch in der Form funktionieren:

Set Sheet = Doc.Sheets(0)
Set Cell = Sheet.getByIndex(0).getCellByPosition (1, 1)

obwohl das ja quasi 'doppelt-gemopppelt' ist.


Eine eigentliche Erklärung habe ich nicht, ich kenne diese Dinge nur
weil man auch bei der Programmierung in StarBasic immer wieder mal auf
solche Ungereimtheiten stößt.



Gruß
Jörg


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org
For additional commands, e-mail: users-h...@de.openoffice.org

Antwort per Email an