Anfängerfrage

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

klaus_harrer
Beiträge: 7
Registriert: Mi, 18.02.2004 21:15
Wohnort: Berlin
Kontaktdaten:

Anfängerfrage

Beitrag 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
openmind
****
Beiträge: 184
Registriert: So, 29.06.2003 15:00
Wohnort: Schweiz

Beitrag 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.
Meine Installation: AMD Athlon XP 1600+, 512 MB RAM, SuSE Linux 8.2, OpenOffice 1.1
Kostenlose OOo-CD in der Schweiz: http://www.office-cd.ch/
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag 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
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten