Re: [de-users] Calc-Tabellen automatisch erzeugen?
Guten Tag Jörg Schmidt, am Freitag, 23. Juli 2010 um 01:57 schrieben Sie: Zitatanfang option explicit dim ser_man dim desk ... Ich denke Du hast nichts übersehen, = Zitatende = das bedeutet, dass eine als variant deklarierte Variable auch Daten vom Typ object aufnehmen kann!? Geht das sogar soweit, dass alle Typen funktionieren? -- Mit freundlichen Grüßen Jörg Kleinfeld mailto:joerg.kleinf...@arcor.de http://www.bsv.de
Re: [de-users] Calc-Tabellen automatisch erzeugen?
Hallo, Jörg Kleinfeld schrieb: am Freitag, 23. Juli 2010 um 01:57 schrieben Sie: Zitatanfang option explicit dim ser_man dim desk ... Ich denke Du hast nichts übersehen, = Zitatende = das bedeutet, dass eine als variant deklarierte Variable auch Daten vom Typ object aufnehmen kann!? Geht das sogar soweit, dass alle Typen funktionieren? Ein bisschen komische Frage weil sich meine Aussage garnicht auf die Variablendeklaration im DEtail bezog sondern auf das geschilderte Problem insgesamt und weil ich nicht verstehe wieso Du sowas jetzt fragst, denn wäre es nicht so wäre ja der ganze Code überhaupt nicht lauffähig gewesen. das bedeutet, dass eine als variant deklarierte Variable auch Daten vom Typ object aufnehmen kann!? ja. Du kannst Dich auch leicht davon überzeugen das sich der Typ mit Zuweisung des Inhalts ändert: dim ser_man Msgbox TypeName(ser_man) Set ser_man = WScript.CreateObject(com.sun.star.ServiceManager) Msgbox TypeName(ser_man) (die erste MsgBox liefert Empty weil nicht explizit mit Typ angegebene Variablen Variant sind und dann als Empty initialisiert werden, die zweite MsgBox liefert Object) Geht das sogar soweit, dass alle Typen funktionieren? ja, sofern ich nichts Spezielles übersehe ist das im Konkreten wohl so. Anmerkung: In Deiner ersten mail liegt kein Type-Problem im Eigentlichen vor, welches auf einer Variable beruhen würde, lediglich versuchst Du fälschlich auf eine Zelle innerhalb der Auflistung aller Tabellenblättter zuzugreifen, was jedoch nur für ein Tabellenblatt geht und der Wortlaut der Fehlermeldung ist dann mißverständlich. Nachdem ich bereits geschrieben hatte das: --- 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. --- sollte das aber auch verständlich sein. Gruß Jörg - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Calc-Tabellen automatisch erzeugen?
Hallo, Zitat von Jörg Schmidt joesc...@web.de: Ich denke das Folgende tut das Gewünschte, sofern ich die Frage richtig verstehe: Set ser_man = WScript.CreateObject(com.sun.star.ServiceManager) Set desk = ser_man.createInstance(com.sun.star.frame.Desktop) Dim no_arg() Set Doc = desk.loadComponentFromURL(private:factory/scalc, _blank, 0, no_arg) 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... Gruss, John - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Calc-Tabellen automatisch erzeugen?
Guten Tag John Kirste, am Donnerstag, 22. Juli 2010 um 15:44 schrieben Sie: Zitatanfang 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() = Zitatende = Aus dem Handbuch StarOffice Basic Thema Explizite Variablendeklaration: In seiner einfachsten Form lautet der Befehl für eine explizite Variablendeklaration: Dim MyVar Dieses Beispiel deklariert eine Variable mit dem Namen MyVar und dem Typ Variant. Ein Variant ist eine Universalvariable, die alle möglichen Werte aufnehmen kann, etwa Zeichenfolgen, ganze Zahlen, Fließkommazahlen und Boolean-Werte. Der Datentyp object ist nicht in dieser Liste! Versuche einmal die Variablen vom Typ her zu definieren: dim ser_man as object; usw. -- Mit freundlichen Grüßen Jörg Kleinfeld mailto:joerg.kleinf...@arcor.de http://www.bsv.de
Re: [de-users] Calc-Tabellen automatisch erzeugen?
Hallo, Am 22.07.2010 17:19, schrieb Jörg Kleinfeld: Der Datentyp object ist nicht in dieser Liste! Versuche einmal die Variablen vom Typ her zu definieren: dim ser_man as object; das hatte ich zunächst auch gemacht. Es führte sofort zu einer Fehlermeldung :-( Gruss, John usw. - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Calc-Tabellen automatisch erzeugen?
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
Re: [de-users] Calc-Tabellen automatisch erzeugen?
Hallo John, Am 21.07.2010 07:46, schrieb John Kirste: kann ich Calc-Tabellen auch mittels eines VBS-Scripts erzeugen lassen? Welche Klassen muß ich da verwenden? Möglicherweise hilft Dir ein Beispiel für die Automation von OOo Writer mit VBA und Du kannst daraus Erkenntnisse auf VBS übetragen. http://wiki.services.openoffice.org/wiki/User:Stefanw/Tipps/Allgemein/OOo_mit_VBA_steuern Dort sind auch Links angegeben mit weiteren Informationen zum Thema. Bei Michael Dannenhöfer (http://www.dannenhoefer.de/faqstarbasic/index.html) findest Du Beispiele und Tipps, wie man OOo mit StarBasic bzw. OOo Basic steuert. Die so vorgeführten Objekte, Eigenschaften und Methoden kannst man auch anderen Programmumgebungen nutzen. Ein anderer Ansatz wäre, dass man die Calc-Datei erstellt, ohne dabei OpenOffice.org zu benutzen. Eine ODT-Datei ist ja nichts Anderes, als ein ZIP-Archiv mit XML-Dateien. Speichere mal eine Calc-Datei, in der Du in Zelle A1 HALLO hinein geschrieben hast. Entpacke die Calc-Datei mit einem ZIP-Programm und schau in die content.xml. Dort findest Du im Klartext das Wort HALLO wieder. Du könntest mit Deinem VBS-Script die XML-Datei mit Deinen Daten füllen und das Paket wieder einpacken. Gruß Stefan -- www.datenpilot.org - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Calc-Tabellen automatisch erzeugen?
Hallo, John Kirste schrieb: kann ich Calc-Tabellen auch mittels eines VBS-Scripts erzeugen lassen? Ich denke das Folgende tut das Gewünschte, sofern ich die Frage richtig verstehe: Set ser_man = WScript.CreateObject(com.sun.star.ServiceManager) Set desk = ser_man.createInstance(com.sun.star.frame.Desktop) Dim no_arg() Set Doc = desk.loadComponentFromURL(private:factory/scalc, _blank, 0, no_arg) Gruß Jörg - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org
Re: [de-users] Calc-Tabellen automatisch erzeugen?
Hallo, Am 21.07.2010 21:36, schrieb Jörg Schmidt: kann ich Calc-Tabellen auch mittels eines VBS-Scripts erzeugen lassen? Ich denke das Folgende tut das Gewünschte, sofern ich die Frage richtig verstehe: Set ser_man = WScript.CreateObject(com.sun.star.ServiceManager) ... Klasse!!! Das ist genau der Anfang, den ich suchte. Gruss, John - To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org For additional commands, e-mail: users-h...@de.openoffice.org