Seite 1 von 1
[gelöst] mit Basic unter Linux ein Template aufrufen
Verfasst: Fr, 11.09.2009 09:10
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
Re: mit Basic unter Linux ein Template aufrufen
Verfasst: Fr, 11.09.2009 09:23
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
Re: mit Basic unter Linux ein Template aufrufen
Verfasst: Fr, 11.09.2009 09:51
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.
Re: mit Basic unter Linux ein Template aufrufen
Verfasst: Fr, 11.09.2009 10:16
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
Re: [gelöst] mit Basic unter Linux ein Template aufrufen
Verfasst: Fr, 11.09.2009 11:02
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.
Re: mit Basic unter Linux ein Template aufrufen
Verfasst: Fr, 11.09.2009 17:16
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...
Re: [gelöst] mit Basic unter Linux ein Template aufrufen
Verfasst: Sa, 12.09.2009 00:45
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
Re: [gelöst] mit Basic unter Linux ein Template aufrufen
Verfasst: Sa, 12.09.2009 07:03
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.