Seite 1 von 1

Anfängerfrage

Verfasst: Do, 19.02.2004 20:24
von klaus_harrer
Hallo

Ich möchte ein Sheet erzeugen und die zuvor ausgelesen Daten in diesen Sheets eintragen. Es scheitert schon beim erzeugen eines Sheets.

oNewSheet = Doc.createInstance("com.sun.star.sheet.Spreadsheet")
Doc = StarDesktop.CurrentComponent
Doc.Sheets.insertByName("New Sheet", oNewSheet)

ist mein Code zum erzeugen eines neuen Sheets. Es kommt die Fehlermeldung das die Variable oNewSheet nicht belegt sei.

Ich hoffe mir kann da einer weiterhelfen.

MfG
Klaus

Verfasst: Do, 19.02.2004 21:12
von openmind
Wenn 'option explicit' gesetzt ist brauchst du voran ein

Code: Alles auswählen

Dim oNewSheet as Object
Dim Doc as Object 
Eine weiter Fallgrube ist, dass du ThisComponent aufrufst, was völlig korrekt ist. Beim entwickeln musst du aber beim aufrufen daran denken, was den gerade ThisComponent ist. Um sicher zu sein, dass auch das Fenster mit dem Calc-Dokument momentan auch wirklich gerade ThisComponent ist, rufst du das Makro im Calc-Fenster über Extras - Macros... auf.


Unter der Adresse

http://www.bcwin.ch/ooo/basic/

findest du ein Dokument über Basic und Calc. Da ist eine Menge über Calc, wie ich hoffe verständlich und hinreichend, erklärt und mit Codebeispielen vordemonstriert.

Verfasst: Do, 19.02.2004 21:33
von Gast
Hallo

Danke für die schnelle Antwort.
Endlich eine Seite die ich schon seit langem suche.

MfG
Klaus

Verfasst: Sa, 21.02.2004 10:32
von Toxitom
HAllo Klaus,

in Ergänzung zu den Tipps:

Der Fehler in deinem Code ist einfach die Reihenfolge.
Zitat:

Code: Alles auswählen

oNewSheet = Doc.createInstance("com.sun.star.sheet.Spreadsheet")
Doc = StarDesktop.CurrentComponent
Doc.Sheets.insertByName("New Sheet", oNewSheet) 
oNewSheet konnte nicht erstellt werden, solange Doc nicht initialisiert wurde. Also, einfach die beiden ersten Zeilen rumdrehen, dann sollte dieser kurze Codeabschnitt auch funktionieren.

Gruss
Thomas