Pit hat geschrieben:Ich erstarre in Erfurcht und fühle mich wieder mal ganz klein!
Der einzige Unterschied zwischen Dir und mir, ist nicht die Größe, sondern die Nutzung
von XRAY, gepaart mit einer ausdauernden Geduld bei der Suche im Netz.
Es war reiner Zufall, dass ich zuerst per
Code: Alles auswählen
getScriptProvider ( ) AS com.sun.star.script.provider.XScriptProvider com.sun.star.script.provider.XScriptProviderSupplier
gefunden habe.
Allerdings führten meine Test’s immer zu Fehlermeldungen.
Also im Netz suchen und ich fand zunächst nur etwas zum Thema Python, bis ich dann diesen Begriff fand „ MasterScriptProviderFactory“.
In der API nachgeschlagen, hartnäckig im Netz gesucht und im englischen Forum fündig geworden.
Du siehst, nur geklaut und etwas umgemodelt.
Pit hat geschrieben:Ich traue mich jetzt noch nicht so recht das einzubauen weil ich nur Teile verstehe.
Nun es wird Fleißarbeit sein, Deinen Code entsprechend anzupassen, zumal ich gemäß Deiner Aussagen nur erahnen kann, dass es ein größerer recht komplexer Code ist, welchen Du nutzt.
Ich vermute Du doppelklickst auch auf Zellen in anderen Spalten, um eine entsprechende Routine aufzurufen.
Dabei kann Dir das von mir erstellte „Array’s in Array“ gute Dienste leisten. Vorausgesetzt die Logik paßt.
Pit hat geschrieben:(Ich weiß nicht, ob ich hier gesteinigt werde, wenn ich zugebe, dass mich hier mal wieder die Befürchtung ereilt, dass ich nicht wirklich Ahnung habe, was "objektorientiertes Programmieren" heißt (mein Riesenprogramm funktioniert ja totzdem (... meistens)))
Foren sind doch dazu da Fragen zu stellen.
Aus meiner Sicht gibt es keine dummen Fragen, sondern ggf. nur dumme Antworten.
Und ein Profiprogrammierer bin ich auch nicht; habe mir alles selbst beigebracht.
Motto:
- XRAY
- API verstehen
- RTFM
- Verstehe das Gelesene
- Teste das Gelesene
- Nutze das Gelesene
- Dann versteht’s Du wie es läuft.
- Jede Fehlermeldung treibt einen u.U. in den Wahsinn, aber man lernt daraus.
So auch in dem aktuellen Fall:
String in Anweisung konvertieren.
- Stelle auch dumme Fragen in den Foren

Pit hat geschrieben:Hilf mir doch mal hiermit:
Sind das Varaiblen des Typs "object":
Dim oMSPF ' Service "MasterScriptProviderFactory"
Dim oSC ' Interface: "XScriptInvocationContext"
Siehe den Kommentar hinter den Deklarationen:
- ' Service "MasterScriptProviderFactory"
- ' Interface: "XScriptInvocationContext"
Ich habe mir angewöhnt die AOO-Konventionen bei der Basic-Programmierungg zu nutzen, eben weil ich kein Profi mit, sind die Präfixe quasi selbstredend.
Siehe diese AOO Seite…
Hier erkennst Du dass ein vorangestelltes
o dreierlei bedeuten kann:
- oObject
- oService
- oInterface
Daraus resultiert:
Wenn ich meine ggf. umfangreichen Code lese, dann weiß ich sofort, es muss sich bei der Variablen um eines der drei Dinge handeln. Wenn ich dann noch den eigentlichen Variablennamen z.B. Doc hinter
o schreibe, dann kann ich auch in fünf Jahren noch erahnen dass es sich um ein Objekt handelt.
Bei Services könnte man das Präfix erweitern und so deklarieren:
oSrvMasterScript
Bei Interfaces:
oIntTitle
Bei script bin ich mir iim Augenblick noch nicht sicher, um was es sich hierbei handelt.
Wenn ich script mit Xray inspiziere, dann vermute ich es handelt sich um ein Objekt.
Dazu recherchiere ich aber noch.
Pit hat geschrieben:Wo findet mein Makro dieses Object(?) ? (zwei Fragezeichen weil ich nicht sicher bin ob das ein Objekt ist):
oMSPF = GetDefaultContext().getByName("/singletons/com.sun.star.script.provider.theMasterScriptProviderFactory")
Siehe hier:
http://ooo-site.apache.org/api/docs/com ... ctory.html
Daraus geht hervor, dass „MasterScriptProviderFactory“ ein Service ist. Ein Service stellt weitere Services, Interfaces, Eigenschaften und Methoden bereit. Dies hat aber nichts mit Vererrbung zu tun.
Es wird ein Zeiger auf den Service erstellt und dann greift man sich Eigenschaften und Methoden, usw. welche der Service bereitstellt.
Was dies im einzelffal ist, ließt man entweder mit XRAY aus oder man bemüht die API-Dokmentation.
Somit ist
oMSPF lediglich ein Zeiger auf diesen Service.
Als würde man mit dem Finger auf ein Haus zeigen.
Übersetzen könnte man dieses in etwa so:
Lieber Interpreter ich möchte genau diesen Service nutzen.
Mehr sagt die Anweisung nicht aus.
Pit hat geschrieben:das hier ist wohl so ähnlich wie wenn ich einen meiner Dialoge aufrufe:
oSC = oMSPF.createScriptProvider(oDoc.ScriptContainer)
Nein, nicht ähnlich.
Mit meinen eigenen Worten. Beachte aber, dass ich auch kein Programmierer bin!
Dies ist der eigentliche Zugrif auf den Service.
Der Service soll einen neuen ScriptProvider erstellen, mit dem Zugriff auf die Scripts im Dokument.
Pit hat geschrieben:hier wird wohl der entsprechende Text reingepackt:
sScriptCall="vnd.sun.star.script:Standard.modAufgaben." & sAufgabe & "?language=Basic&location=document"
script = oSC.getScript(sScriptCall)
Ja. Genau dies ist der entscheidende Punkt.
Denn hier wird keine Call-Anweisung erwartet, sondern ein String.
Deshalb lasseen sich die Strings zusammenbauen:
Code: Alles auswählen
sScriptCall="vnd.sun.star.script:Standard.modAufgaben." & sAufgabe & "?language=Basic&location=document"
Die Bibliothek „ Standard“ im Dokument.
Das Modul „ modAufgaben“ in der Bibliothek „Standard“
Name der Routine im Modul „ modAufgaben“, welche aufgerufen werden soll: „sAufgabe“
Ich nehme an, dass dieser Part soviel bedeutet wie:
Lieber Interpreter, es handelt sich bei den Angaben um einen Basic_Code, welcher sich in diesem Dokument befindet.
Mit der nachfolgenden Zeile weiß ich auch nicht weiter.
Gemäß Xray ist dies auch ein Objekt und hätte erwartet, dass man den Inhalt von (sScriptCall)
hier irgendwo auslesen kann, aber Fehlanzeige.
Naja, muss nochmal forschen...
Pit hat geschrieben:Warum sind jetzt hier drei Arrays:
script.invoke(array(), array(), array())
Das habe ich auch nur abgeschrieben und getestet.
Ich weiß „script.invoke“ führt letztendlich das zuvor angegebene Makro aus, aber die drei Arrays ???
http://ooo-site.apache.org/api/docs/com ... cript.html
Werde ich noch recherchieren.
[Quote=Pit]Ich erstarre in Erfurcht und fühle mich wieder mal ganz klein![/Quote]
Der einzige Unterschied zwischen Dir und mir, ist nicht die Größe, sondern die Nutzung
von XRAY, gepaart mit einer ausdauernden Geduld bei der Suche im Netz.
Es war reiner Zufall, dass ich zuerst per
[code]XRAY oDoc[/code]
[code]getScriptProvider ( ) AS com.sun.star.script.provider.XScriptProvider com.sun.star.script.provider.XScriptProviderSupplier [/code]
gefunden habe.
Allerdings führten meine Test’s immer zu Fehlermeldungen.
Also im Netz suchen und ich fand zunächst nur etwas zum Thema Python, bis ich dann diesen Begriff fand „ MasterScriptProviderFactory“.
In der API nachgeschlagen, hartnäckig im Netz gesucht und im englischen Forum fündig geworden.
Du siehst, nur geklaut und etwas umgemodelt.
[quote=Pit]Ich traue mich jetzt noch nicht so recht das einzubauen weil ich nur Teile verstehe.[/quote]
Nun es wird Fleißarbeit sein, Deinen Code entsprechend anzupassen, zumal ich gemäß Deiner Aussagen nur erahnen kann, dass es ein größerer recht komplexer Code ist, welchen Du nutzt.
Ich vermute Du doppelklickst auch auf Zellen in anderen Spalten, um eine entsprechende Routine aufzurufen.
Dabei kann Dir das von mir erstellte „Array’s in Array“ gute Dienste leisten. Vorausgesetzt die Logik paßt.
[Quote=Pit](Ich weiß nicht, ob ich hier gesteinigt werde, wenn ich zugebe, dass mich hier mal wieder die Befürchtung ereilt, dass ich nicht wirklich Ahnung habe, was "objektorientiertes Programmieren" heißt (mein Riesenprogramm funktioniert ja totzdem (... meistens)))[/Quote]
Foren sind doch dazu da Fragen zu stellen.
Aus meiner Sicht gibt es keine dummen Fragen, sondern ggf. nur dumme Antworten.
Und ein Profiprogrammierer bin ich auch nicht; habe mir alles selbst beigebracht.
[u]Motto:[/u]
[list=1]
[*]XRAY
[*]API verstehen
[*][url=https://de.wikipedia.org/wiki/Liste_von_Abk%C3%BCrzungen_(Netzjargon)#R]RTFM[/url]
[*]Verstehe das Gelesene
[*]Teste das Gelesene
[*]Nutze das Gelesene
[*]Dann versteht’s Du wie es läuft.
[*]Jede Fehlermeldung treibt einen u.U. in den Wahsinn, aber man lernt daraus.
So auch in dem aktuellen Fall:
String in Anweisung konvertieren.
[*]Stelle auch dumme Fragen in den Foren :lol: :mrgreen:
[/list]
[Quote=Pit]Hilf mir doch mal hiermit:
Sind das Varaiblen des Typs "object":
Dim oMSPF ' Service "MasterScriptProviderFactory"
Dim oSC ' Interface: "XScriptInvocationContext"[/Quote]
Siehe den Kommentar hinter den Deklarationen:
[list]
[*]' [b]Service[/b] "MasterScriptProviderFactory"
[*]' [b]Interface:[/b] "XScriptInvocationContext"
[/list]
Ich habe mir angewöhnt die AOO-Konventionen bei der Basic-Programmierungg zu nutzen, eben weil ich kein Profi mit, sind die Präfixe quasi selbstredend.
[url=https://wiki.openoffice.org/wiki/DE/Makro_Basic_Tutorial#Variablen]Siehe diese AOO Seite…[/url]
Hier erkennst Du dass ein vorangestelltes [color=#FF0000][b]o[/b][/color] dreierlei bedeuten kann:
[list=1]
[*]oObject
[*]oService
[*]oInterface
[/list]
Daraus resultiert:
Wenn ich meine ggf. umfangreichen Code lese, dann weiß ich sofort, es muss sich bei der Variablen um eines der drei Dinge handeln. Wenn ich dann noch den eigentlichen Variablennamen z.B. Doc hinter [color=#FF0000][b]o[/b][/color] schreibe, dann kann ich auch in fünf Jahren noch erahnen dass es sich um ein Objekt handelt.
Bei Services könnte man das Präfix erweitern und so deklarieren:
[color=#FF0000][b]oSrv[/b][/color]MasterScript
Bei Interfaces:
[color=#FF0000][b]oInt[/b][/color]Title
[code]Dim script '[/code]
Bei script bin ich mir iim Augenblick noch nicht sicher, um was es sich hierbei handelt.
Wenn ich script mit Xray inspiziere, dann vermute ich es handelt sich um ein Objekt.
Dazu recherchiere ich aber noch.
[Quote=Pit]Wo findet mein Makro dieses Object(?) ? (zwei Fragezeichen weil ich nicht sicher bin ob das ein Objekt ist):
oMSPF = GetDefaultContext().getByName("/singletons/com.sun.star.script.provider.theMasterScriptProviderFactory")[/Quote]
Siehe hier:
http://ooo-site.apache.org/api/docs/common/ref/com/sun/star/script/provider/MasterScriptProviderFactory.html
Daraus geht hervor, dass „MasterScriptProviderFactory“ ein Service ist. Ein Service stellt weitere Services, Interfaces, Eigenschaften und Methoden bereit. Dies hat aber nichts mit Vererrbung zu tun.
Es wird ein Zeiger auf den Service erstellt und dann greift man sich Eigenschaften und Methoden, usw. welche der Service bereitstellt.
Was dies im einzelffal ist, ließt man entweder mit XRAY aus oder man bemüht die API-Dokmentation.
Somit ist [color=#FF0000]oMSPF[/color] lediglich ein Zeiger auf diesen Service.
Als würde man mit dem Finger auf ein Haus zeigen.
Übersetzen könnte man dieses in etwa so:
Lieber Interpreter ich möchte genau diesen Service nutzen.
Mehr sagt die Anweisung nicht aus.
[Quote=Pit]das hier ist wohl so ähnlich wie wenn ich einen meiner Dialoge aufrufe:
oSC = oMSPF.createScriptProvider(oDoc.ScriptContainer) [/Quote]
Nein, nicht ähnlich.
Mit meinen eigenen Worten. Beachte aber, dass ich auch kein Programmierer bin!
Dies ist der eigentliche Zugrif auf den Service.
Der Service soll einen neuen ScriptProvider erstellen, mit dem Zugriff auf die Scripts im Dokument.
[Quote=Pit]hier wird wohl der entsprechende Text reingepackt:
sScriptCall="vnd.sun.star.script:Standard.modAufgaben." & sAufgabe & "?language=Basic&location=document"
script = oSC.getScript(sScriptCall)[/Quote]
Ja. Genau dies ist der entscheidende Punkt.
Denn hier wird keine Call-Anweisung erwartet, sondern ein String.
Deshalb lasseen sich die Strings zusammenbauen:
[code]sScriptCall="vnd.sun.star.script:Standard.modAufgaben." & sAufgabe & "?language=Basic&location=document"[/code]
Die Bibliothek „ Standard“ im Dokument.
Das Modul „ modAufgaben“ in der Bibliothek „Standard“
Name der Routine im Modul „ modAufgaben“, welche aufgerufen werden soll: „sAufgabe“
Ich nehme an, dass dieser Part soviel bedeutet wie:
[code]?language=Basic&location=document[/code]
Lieber Interpreter, es handelt sich bei den Angaben um einen Basic_Code, welcher sich in diesem Dokument befindet.
Mit der nachfolgenden Zeile weiß ich auch nicht weiter.
Gemäß Xray ist dies auch ein Objekt und hätte erwartet, dass man den Inhalt von (sScriptCall)
hier irgendwo auslesen kann, aber Fehlanzeige.
Naja, muss nochmal forschen...
[code]oSC.getScript(sScriptCall)[/code]
[Quote=Pit]Warum sind jetzt hier drei Arrays:
script.invoke(array(), array(), array()) [/Quote]
Das habe ich auch nur abgeschrieben und getestet.
Ich weiß „script.invoke“ führt letztendlich das zuvor angegebene Makro aus, aber die drei Arrays ???
http://ooo-site.apache.org/api/docs/common/ref/com/sun/star/script/provider/XScript.html
Werde ich noch recherchieren.