[gelöst] mit Basic unter Linux ein Template aufrufen

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

Moderator: Moderatoren

wega
****
Beiträge: 148
Registriert: So, 03.06.2007 21:37

[gelöst] mit Basic unter Linux ein Template aufrufen

Beitrag von wega »

Hallo zusammen,

ich möchte unter Linux mit Office-Basic ein Template aufrufen, an dem selbst wieder Makros angebunden sind.

Ganz normal unter Opfenoffice geht dies mit <Datei neu> < aus Vorlagen>. Damit wird aus dem Template ein Blankoabbild geschaffen, die Makros aktiviert und los gehts.

In meinem Fall habe ich mir ein Kontrollbutton eingebaut, das ich anklicke und damit die oben beschriebene Aktion auslöse.
Im nachfolgenden der von mir benutze Code:

Code: Alles auswählen

sub quittung
	Dim myFileProp(0) As New com.sun.star.beans.PropertyValue
	oDesktop =   createUnoService("com.sun.star.frame.Desktop")
	sSourceFile = "/.openoffice.org2/user/template/Quittung-Ferienwohnung.ots"
	myFileProp(0).Name = "AsTemplate"
	myFileProp(0).Value = False
	oDocument = oDesktop.loadComponentFromURL( sSourceFile, "_blank", 0,myFileProp() )
end sub
Dieser Code erzeugt dann bei mir den folgenden Fehler:

"BASIC Laufzeitfehler
Es ist eine Exception aufgetreten
Type:com.sun.star.lang.illegalArgumentException
Message: URL seemsto bean unsupported one..

Wie geht es richtig?

mit Gruß
Werner
Zuletzt geändert von wega am Fr, 11.09.2009 10:16, insgesamt 1-mal geändert.
Karolus
********
Beiträge: 7519
Registriert: Mo, 02.01.2006 19:48

Re: mit Basic unter Linux ein Template aufrufen

Beitrag von Karolus »

Hallo
Da fehlt 'converttourl' und der Pfad ist offensichtlich unvollständig.
sSourceFile = converttourl("/home/wega/.openoffice.org2/user/template/Quittung-Ferienwohnung.ots")
Pfad anpassen !

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: mit Basic unter Linux ein Template aufrufen

Beitrag von komma4 »

Anmerkungen:

Möchtest Du ein neues Dokument aus der Vorlage [A: "normal [...] geht dies mit <Datei neu> < aus Vorlagen>"] erstellen oder [B:] die Vorlage bearbeiten?
A: "false loads the template document for editing", Link: OpenProperties
B: TRUE - oder weglassen, "Loading a component of type "template" creates a new untitled document by default"


wega hat geschrieben:die Makros aktiviert
Dafür benötigst Du eine weitere Eigenschaft:

Code: Alles auswählen

Dim myFileProp(1) As New com.sun.star.beans.PropertyValue
   oDesktop =   createUnoService("com.sun.star.frame.Desktop")
   sSourceFile = ConvertToURL( "/home/wega/.openoffice.org2/user/template/Quittung-Ferienwohnung.ots" )
   myFileProp(0).Name = "AsTemplate"
   myFileProp(0).Value = TRUE
   myFileProp(1).Name = "MacroExecutionMode"
   myFileProp(1).Value = com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE_NO_WARN
' oder: wie über die MAKROSICHERHEIT-Einstellungen festgelegt
' com.sun.star.document.MacroExecMode.USE_CONFIG	
wega hat geschrieben:"_blank", 0,myFileProp()

siehe: FrameSearchFlag
Using of this flag will do nothing. Use right combination of other flags instead of this one.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
wega
****
Beiträge: 148
Registriert: So, 03.06.2007 21:37

Re: mit Basic unter Linux ein Template aufrufen

Beitrag von wega »

Danke an Karolus und Winfried.

@ Hallo Karolus, die Anmerkung war richtig, der Pfad war nicht vollständig >> Asche auf mein Haupt <<
und converttourl fehlte auch. Das letztere war mir unbekannt, da es auch ohne funktioniert.
Wahrscheilich habe ich das etwas zu schlampig gehandhabt.

@ Hallo Winfried, die von dir genannte fehlende Eigenschaft hat das Ganze abgerundet. War mir garnicht bekannt.
Jetzt wird das anhängende Makro auch richtig ausgeführt.
Anmerkung:

Code: Alles auswählen

	myFileProp(0).Name = "AsTemplate"
	myFileProp(0).Value = false
	myFileProp(0).Name = "MacroExecutionMode"
    myFileProp(0).Value = com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE_NO_WARN
Der Index bei myFileProp(n) muss auch auf "0" stehen, sonst kommt die Meldung "out of Range".

nochmals Dank an euch beide.

Gruß Werner
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: [gelöst] mit Basic unter Linux ein Template aufrufen

Beitrag von komma4 »

Du überschreibst mit der zweiten Setzung die TEMPLATE-Angabe (wenn Du zweimal den Index 0 nimmst), deshalb hatte ich

Code: Alles auswählen

Dim myFileProp(1) As New com.sun.star.beans.PropertyValue
geschrieben.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: mit Basic unter Linux ein Template aufrufen

Beitrag von komma4 »

wega hat geschrieben:Das letztere war mir unbekannt, da es auch ohne funktioniert
In allen OOo-Versionen, in denen ich bisher testete: nein!
Sonst erfolgt die Fehlermeldung: URL seems to be an unsupported one
[vielleicht gibt es andere, fehlertolerante Kompilationen von OOo - kenne ich nicht]

anonym hat geschrieben:um Betriebssystemunabhängig zu
sein, im URL Format angegeben werden müssen:

file://Pfad_mit_wurzel_Slash
Die Dokumentation verlangt eine URL-Notation, das hat nichts mit dem Betriebssystem zu tun.

Es müssen drei slahes sein.
file:// plus die root-Angabe /home/wega/usw...

Auch bei Windows wird ein drittes / verlangt
file:///c:/windows/usw...
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: [gelöst] mit Basic unter Linux ein Template aufrufen

Beitrag von komma4 »

anonym hat geschrieben:Und es hat etwas mit dem Betriebssystem zu tun.
nein.
anonym hat geschrieben:Deswegen verwendet OOo auf Win und nix URIs.
nein.
Die API-Funktion verwendet URLs. Auch unter Mac
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: [gelöst] mit Basic unter Linux ein Template aufrufen

Beitrag von komma4 »

anonym hat geschrieben:Also doch!
Jetzt hab' ich's verstanden: Dir ging es um die Begriffsverwendung.

Mir ging es um das "es hat etwas mit dem Betriebssystem zu tun"

PEACE: habe nur den Begriff aus der Dokumentation verwendet.
Semantisch hast Du recht.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Antworten