wenn a=1 dann führe Routine_1 aus und wenn b=2 dann starte Routine_2
also anstelle von:
etwas wie:select case a
case 1
routine_1
case 2
routine_2
case
...
end case
geht das?routine_a
Moderator: Moderatoren
etwas wie:select case a
case 1
routine_1
case 2
routine_2
case
...
end case
geht das?routine_a
Code: Alles auswählen
Select Case xxx
.
.
.
End Select
- oderAufg_&zeile
oder so - wäre doch viel eleganter.Aufg_§zeile
ja, genau, wenn das nur funktionieren würde!Wenn nur die Call-Anweisung funktionieren würde.
Der einzige Unterschied zwischen Dir und mir, ist nicht die Größe, sondern die NutzungPit hat geschrieben:Ich erstarre in Erfurcht und fühle mich wieder mal ganz klein!
Code: Alles auswählen
XRAY oDoc
Code: Alles auswählen
getScriptProvider ( ) AS com.sun.star.script.provider.XScriptProvider com.sun.star.script.provider.XScriptProviderSupplier
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.Pit hat geschrieben:Ich traue mich jetzt noch nicht so recht das einzubauen weil ich nur Teile verstehe.
Foren sind doch dazu da Fragen zu stellen.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)))
Siehe den Kommentar hinter den Deklarationen:Pit hat geschrieben:Hilf mir doch mal hiermit:
Sind das Varaiblen des Typs "object":
Dim oMSPF ' Service "MasterScriptProviderFactory"
Dim oSC ' Interface: "XScriptInvocationContext"
Code: Alles auswählen
Dim script '
Siehe hier: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")
Nein, nicht ähnlich.Pit hat geschrieben:das hier ist wohl so ähnlich wie wenn ich einen meiner Dialoge aufrufe:
oSC = oMSPF.createScriptProvider(oDoc.ScriptContainer)
Ja. Genau dies ist der entscheidende Punkt.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)
Code: Alles auswählen
sScriptCall="vnd.sun.star.script:Standard.modAufgaben." & sAufgabe & "?language=Basic&location=document"
Code: Alles auswählen
?language=Basic&location=document
Code: Alles auswählen
oSC.getScript(sScriptCall)
Das habe ich auch nur abgeschrieben und getestet.Pit hat geschrieben:Warum sind jetzt hier drei Arrays:
script.invoke(array(), array(), array())
danke für die interessanten Ausführungen, nur weil ich das kenne, hatte ich gleich am Anfang darauf hinwiesen (im anderen Thread):Es war reiner Zufall, dass ich
Ich habe auch in diese Richtung geforscht, auch wenn ich in meinen Antworten nicht explizit darauf eingegangen bin.Stephan hat geschrieben:"1.
Erstelle zur Laufzeit eine Batchdatei (oder ein Script) welche den Makroaufruf enthält und starte diese Batchdatei. Beispiele dafür sollten sich im Forum finden lassen."
Stephan hat geschrieben:Die von Dir ausgearbeitete Lösung ist aber interessanter, ich werde mir das einmal in Ruhe ansehen.
Das freut michPit hat geschrieben:da habe ich wieder viel gelernt.
Ja, so hatte ich es auch vor. Nur Du erwähntest, dass Du ca. 100 Sub'sPit hat geschrieben:ich habe mich aber mal hingesetzt und dein Script noch vereinfacht. Anstelle von den Strings auf einem extra Tabellenblatt erstelle ich die Strings mit einer Schleife und das Makro starte ich mit einem Tabellenblattereignis direkt durch Klick auf die entsprechende Zelle mit dem Namen des
z.B. habe ich jetzt gefunden:Ich habe auch in diese Richtung geforscht,