Aus aktuellem Anlass hebe ich diesen Thread wieder aus der Versenkung hervor, da ich mein Eingangsproblem "fast Perfekt" gelöst habe.
Hallo DPunch,
in diesem Thread:
Makro in Datei ausführen, die 'hidden' geöffnet ist, hattest Du eine Möglichkeit vorgestellt wie man in einer HIDDEN geladene Datei ein Makro ausführen kann. Und das kam mir jetzt in doppelter Hinsicht zu gute.
Aktuell stand ich vor dem Problem, wie kann ich aus der Datei 1
in die Datei 2, welche HIDDEN geladen ist, ein neues, zusätzliches BASIC-Modul mit Inhalt anlegen. Das Problem ist, es geht so nicht wie anfangs gedacht.
Also nach diesen Codezeilen
Code: Alles auswählen
myFileProp(1).name= "Hidden"
myFileProp(1).value= TRUE
oDok2 = starDesktop.loadComponentfromURL(url, "_blank", 0, myFileProp())
einfach den Code für das Modul anlegen ausführen, funktioniert nicht.
Wenn ich aber FALSE für Hidden setze, also die Datei ist im Vordergrund, dann geht es. Aber das wollte ich aus verschiedenen Gründen vermeiden. Doch zum Glück bin ich heut auf den eben verlinkten Thread hier im Forum gestoßen. Und nach etwas Anpassung des dortigen Code auf das hier:
Code: Alles auswählen
sLibName = "Standard"
sModuleName = "Module1"
sMakroName = "NullSub"
sScriptURI = "vnd.sun.star.script:" & sLibName & "." & sModuleName & "." & sMakroName & "?language=Basic&location=document"
oScript = oDok2.ScriptProvider.getScript(sScriptURI)
oScript.invoke(Array(dummy),Array(),Array())
Habe ich mein Ziel erreicht. Jedoch musste ich aber in der Datei 2 im Module1 noch eine Scheinsub anlegen.
Nun kann ich das was ich hier eingangs wollte, über den kleinen Umweg eines zusätzlichen Mdouls, doch zufriedenstellend erledigen. Daten die ich vorher in der Datei in einem Tabellenblatt geschrieben hatte, verschwinden nun in das Makro. Das hat natürlich doch so einige Vorteile. Und deshalb Danke ich dir vielmals für deinen Lösungsvorschlag aus dem verlinkten Thread

.
Aber ein Frage hätte ich da dennoch.
Kann der jetzige eingesetzte ScriptProvider so umgeschrieben werden, das ich in der anderen Datei auf die NullSub verzichten kann?
Da mir diese Hohe Kunst der Makroprogrammierung doch noch zu hoch ist, stelle ich die Frage.
Sollte das nicht möglich sein, so wäre das auch nicht weiter tragisch da ich auch so mit dem aktuellem Ergebnis doch sehr zufrieden bin.
Ich hänge jetzt mal ein neues Datei-Paket an, in dem die aktuellen Änderungen zu sehen sind. In der Datei "Quelldatei2.ods" im Modul "Fertigstellen" sind die interessanteren Dinge zu finden.
Gruß
balu
Aus aktuellem Anlass hebe ich diesen Thread wieder aus der Versenkung hervor, da ich mein Eingangsproblem "fast Perfekt" gelöst habe.
Hallo DPunch,
in diesem Thread: [url=http://de.openoffice.info/viewtopic.php?f=18&t=52461#p196299]Makro in Datei ausführen, die 'hidden' geöffnet ist[/url], hattest Du eine Möglichkeit vorgestellt wie man in einer HIDDEN geladene Datei ein Makro ausführen kann. Und das kam mir jetzt in doppelter Hinsicht zu gute.
Aktuell stand ich vor dem Problem, wie kann ich aus der Datei 1 [u]in die[/u] Datei 2, welche HIDDEN geladen ist, ein neues, zusätzliches BASIC-Modul mit Inhalt anlegen. Das Problem ist, es geht so nicht wie anfangs gedacht.
Also nach diesen Codezeilen
[code]
myFileProp(1).name= "Hidden"
myFileProp(1).value= TRUE
oDok2 = starDesktop.loadComponentfromURL(url, "_blank", 0, myFileProp())
[/code]
einfach den Code für das Modul anlegen ausführen, funktioniert nicht.
Wenn ich aber FALSE für Hidden setze, also die Datei ist im Vordergrund, dann geht es. Aber das wollte ich aus verschiedenen Gründen vermeiden. Doch zum Glück bin ich heut auf den eben verlinkten Thread hier im Forum gestoßen. Und nach etwas Anpassung des dortigen Code auf das hier:
[code]
sLibName = "Standard"
sModuleName = "Module1"
sMakroName = "NullSub"
sScriptURI = "vnd.sun.star.script:" & sLibName & "." & sModuleName & "." & sMakroName & "?language=Basic&location=document"
oScript = oDok2.ScriptProvider.getScript(sScriptURI)
oScript.invoke(Array(dummy),Array(),Array())
[/code]
Habe ich mein Ziel erreicht. Jedoch musste ich aber in der Datei 2 im Module1 noch eine Scheinsub anlegen.
[code]
Sub NullSub
' Trick 17 ;-)
End Sub
[/code]
Nun kann ich das was ich hier eingangs wollte, über den kleinen Umweg eines zusätzlichen Mdouls, doch zufriedenstellend erledigen. Daten die ich vorher in der Datei in einem Tabellenblatt geschrieben hatte, verschwinden nun in das Makro. Das hat natürlich doch so einige Vorteile. Und deshalb Danke ich dir vielmals für deinen Lösungsvorschlag aus dem verlinkten Thread :D.
Aber ein Frage hätte ich da dennoch.
[i]Kann der jetzige eingesetzte ScriptProvider so umgeschrieben werden, das ich in der anderen Datei auf die NullSub verzichten kann?[/i]
Da mir diese Hohe Kunst der Makroprogrammierung doch noch zu hoch ist, stelle ich die Frage.
Sollte das nicht möglich sein, so wäre das auch nicht weiter tragisch da ich auch so mit dem aktuellem Ergebnis doch sehr zufrieden bin.
Ich hänge jetzt mal ein neues Datei-Paket an, in dem die aktuellen Änderungen zu sehen sind. In der Datei "Quelldatei2.ods" im Modul "Fertigstellen" sind die interessanteren Dinge zu finden.
Gruß
balu