Seite 1 von 1

mehrere Tasks

Verfasst: Mi, 08.07.2015 16:34
von urbarobe
Hallo,

ich bin dabei MS Excel durch LibreOffice Calc abzulösen.

Über VB-Skript erstelle ich mit CreateObject("Excel.Application") einen Task.
Das kann ich beliebig oft wiederholen und habe so immer einen eigenen Prozess.

Wie ist das bei LibreOffice? Kann ich hier auch mehrere Tasks erstellen?

Viele Grüße
Robert

Re: mehrere Tasks

Verfasst: Mi, 08.07.2015 17:33
von Karolus
Hallo

VBA != (Star-)Basic

in Basic existiert der Begriff `Task` nicht.
Es wäre sinnvoller du beschreibst das worum es geht, ohne VBA-Sprech zu benutzen.

( und ja - man kann in Basic verschiedene Calc-dokumente ansprechen, ohne jedesmal ein neues Fass aufzumachen respektive eine neue Office-instanz zu starten)

Re: mehrere Tasks

Verfasst: Mi, 08.07.2015 17:37
von balu
Hallo Robert,
Kann ich hier auch mehrere Tasks erstellen?
Nein, geht nicht!

Excel ist ein eigenständiges Programm, genau so wie Word oder Powerpoint.
Bei StarOffice, OpenOffice.org, LibreOffice und ApacheOpenOffice geht das deshalb nicht, weil der Kern immer der gleiche ist sich jedoch lediglich die Oberfläche ändert, wenn man Calc oder Wrirter aufruft (mal etwas Laienhaft ausgedrückt).



Gruß
balu

Re: mehrere Tasks

Verfasst: Do, 09.07.2015 07:40
von Stephan
Wie ist das bei LibreOffice? Kann ich hier auch mehrere Tasks erstellen?
Bei LibreOffice garnicht (so beobachtet in der aktuellen Version 4.4.3), bei OpenOffice ist es zwar theoretisch möglich, aber nicht nötig und auch nicht zu empfehlen.

Der Zugriff per WSH erfolgt normalerweise über die entsprechende COM-Komponente:

Set objServiceManager= WScript.CreateObject("com.sun.star.ServiceManager")

hier ist ein kurzes Beispiel (viewtopic.php?t=1460):

Code: Alles auswählen

'===============================================================
' Calc-Dokument erzeugen, Werte eintragen, als *.xls speichern
' Sprache: VBScript   Datum: 05.08.2004
'===============================================================
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)
Set sheet = Doc.getSheets().getByIndex(0)
Call sheet.getCellByPosition(0, 0).SetFormula("Zelle A1")
Call sheet.getCellByPosition(1, 0).SetFormula("Zelle B1")
Call sheet.getCellByPosition(2, 0).SetFormula("Zelle C1")
Dim sich_arg(0)
Set sich_arg(0) = ser_man.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
sich_arg(0).Name = "FilterName"
sich_arg(0).Value = "MS Excel 97"
Doc.storeToURL "file:///d:/calc_to_excel.xls", sich_arg
Doc.close(true)

Siehe auch:
https://wiki.openoffice.org/wiki/Docume ... _Component
http://www.kalitech.fr/clients/doc/VB_APIOOo_en.html


Gruß
Stephan

Re: mehrere Tasks

Verfasst: Do, 09.07.2015 08:22
von urbarobe
@Karolus
LibreOffice läuft unter Windows, daher Task :?.

@balu
Danke für das klare 'NEIN' :D

@Worum es geht:
Aus einem DMS werden Excel-Dokumente geöffnet. Über einen Button wird gedruckt, Datenbankeinträge aktualisiert etc.
Bisher wird Excel verwendet, jetzt soll Calc zum Einsatz kommen. Durch den eigenen Prozess passt das mit den Variablen unter Excel.

Jetzt unter Calc geht das natürlich nicht mehr so. Verwende hier Globale Variablen, der Bezug zum Dokument muss her.
Kann ich die Werte irgendwo im Dokument-Objekt ablegen? XRay und MRI sind mir bekannt, bin aber noch nicht fündig geworden.

Meine Idee wäre jetzt alle Variablen und Parameter extern zu speichern und bei Bedarf wieder einzulesen. Wirklich gefallen tut mir das nicht.

Gruß
Robert

Re: mehrere Tasks

Verfasst: Do, 20.05.2021 17:02
von ClosedOffice345
Stephan hat geschrieben: Do, 09.07.2015 07:40
Wie ist das bei LibreOffice? Kann ich hier auch mehrere Tasks erstellen?
Bei LibreOffice garnicht (so beobachtet in der aktuellen Version 4.4.3), bei OpenOffice ist es zwar theoretisch möglich, aber nicht nötig und auch nicht zu empfehlen.

Der Zugriff per WSH erfolgt normalerweise über die entsprechende COM-Komponente:

Set objServiceManager= WScript.CreateObject("com.sun.star.ServiceManager")

hier ist ein kurzes Beispiel (http://de.openoffice.info/viewtopic.php?t=1460):

Code: Alles auswählen

'===============================================================
' Calc-Dokument erzeugen, Werte eintragen, als *.xls speichern
' Sprache: VBScript   Datum: 05.08.2004
'===============================================================
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)
Set sheet = Doc.getSheets().getByIndex(0)
Call sheet.getCellByPosition(0, 0).SetFormula("Zelle A1")
Call sheet.getCellByPosition(1, 0).SetFormula("Zelle B1")
Call sheet.getCellByPosition(2, 0).SetFormula("Zelle C1")
Dim sich_arg(0)
Set sich_arg(0) = ser_man.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
sich_arg(0).Name = "FilterName"
sich_arg(0).Value = "MS Excel 97"
Doc.storeToURL "file:///d:/calc_to_excel.xls", sich_arg
Doc.close(true)

Siehe auch:
https://wiki.openoffice.org/wiki/Docume ... _Component
http://www.kalitech.fr/clients/doc/VB_APIOOo_en.html


Gruß
Stephan
Hey,

ich sehe es genauso wie Stefan. Allerdings wäre OpenOffice eine gute Alternative zu den mehreren Tasks.