Seite 1 von 1
Re: Makro in Datei ausführen, die 'hidden' geöffnet ist
Verfasst: Di, 28.02.2012 14:22
von Stephan
Ich öffne meine Anwendungsdatei (Anwendung.ods). Dem Ereignis 'Dokument öffnen' weise ich ein Makro zu, das die Datei 'Daten.ods' öffnet, und zwar 'hidden'.
Hast du als Öffnungs-Parameter nicht nur den 'Hidden'-Parameter übergeben sondern auch den Parameter fpür den 'Makro-Modus'?
siehe:
http://www.dannenhoefer.de/faqstarbasic ... fnen..html
DEnn wenn Du eine Datei mittels Makro öffnest sind Makros in dieser Datei normalerweise nicht ausführbar.
Gruß
Stephan
Re: Makro in Datei ausführen, die 'hidden' geöffnet ist
Verfasst: Di, 28.02.2012 16:59
von Stephan
toni007 hat geschrieben:Hallo Stephan,
das passt schon (ExecutionMode = 4). Die Messagebox erscheint ja auch sofort, wenn ich die Daten.ods nachträglich doppelklicke, sodass die Datei sichtbar wird.
Gruß
Thomas
mmh
1.
erkläre dann nochmals genau was du meinst mit:
Erst wenn ich die Datei 'Daten.ods' per Doppelklick sichtbar mache wird auch das Makro ausgeführt und die Messagebox angezeigt.
denn diese DAtei ist doch nicht sichtbar, wo also klickts du?
2.
DEin Vorgehen ist nicht erkennbar falsch, deshalb versuche statt der MsgBox testweise einen Dialog zu benutzen (bite einfach mal als Testfall durchspielen und Rückmeldung geben)
Gruß
Stephan
Re: Makro in Datei ausführen, die 'hidden' geöffnet ist
Verfasst: Mi, 29.02.2012 09:01
von Stephan
Da ich es jetzt selbst getestet habe konnte ich feststellen das es funktioniert wenn man erst das Laden des Dokuments Daten.ods durchführt und sofort im Anschluss auf unsichtbar schaltet.
Um die Optik des Ganzen zu optimieren würde ich ggf. das Dokument über den Umweg des Startens von soffice mit der Datei als Parameter und minimiertem Anwendungsfenster.
Gruß
Stephan
Re: Makro in Datei ausführen, die 'hidden' geöffnet ist
Verfasst: Mi, 29.02.2012 10:18
von Stephan
Es liegt aber wohl auch nicht am 'hidden'!
nach meinen Tests schon
Für die Zukunft wäre eine Lösung aber schon interessant!!!
Deswegen hatte ich eine genannt.
GRuß
Stephan
Re: Makro in Datei ausführen, die 'hidden' geöffnet ist
Verfasst: Mi, 29.02.2012 11:36
von Stephan
Tja, was soll ich dazu sagen. Mein Code ist:
Code: Alles auswählen
Dim myProp(1) as new com.sun.star.beans.PropertyValue
myProp(0).name= "MacroExecutionMode"
myProp(0).value = 4
myProp(1).name= "Hidden"
myProp(1).value = False
pfad = ThisComponent.URL
tmp = Split(pfad, "/")
tmp(UBOUND(tmp())) = ""
url = JOIN(tmp(), "/") & "Daten.ods"
oDocument = StarDesktop.loadComponentFromURL(url, "_blank", 0, myProp() )
und der geht wenn in Datemn.ods folgender Code über das EReignis "Dokument öffnen" gestartet wird:
Nicht geht es mit:
Als workaround geht es jedoch, wie schon benannt, mit:
Code: Alles auswählen
Dim myProp(1) as new com.sun.star.beans.PropertyValue
myProp(0).name= "MacroExecutionMode"
myProp(0).value = 4
myProp(1).name= "Hidden"
myProp(1).value = False
pfad = ThisComponent.URL
tmp = Split(pfad, "/")
tmp(UBOUND(tmp())) = ""
url = JOIN(tmp(), "/") & "Daten.ods"
oDocument = StarDesktop.loadComponentFromURL(url, "_blank", 0, myProp() )
oDocument.CurrentController.Frame.Containerwindow.Visible = False
Gruß
Stephan
Re: Makro in Datei ausführen, die 'hidden' geöffnet ist
Verfasst: Mi, 29.02.2012 19:52
von DPunch
Servus
toni007 hat geschrieben:Für die Zukunft wäre eine Lösung aber schon interessant!
Wenn das Dokument um jeden Preis von vornherein versteckt geöffnet werden muss, hilft der ScriptProvider des Dokuments.
Erstell Dir ein Dokument und darin das Makro (dies ist die Datei die versteckt geöffnet wird)
Code: Alles auswählen
Sub MakroInDocument2(Optional blaVar)
If isEmpty(blaVar) Then
MsgBox "MakroInDocument2 ausgeführt - ohne Parameter"
Else
MsgBox "MakroInDocument2 ausgeführt - Parameter: " & blaVar
End If
End Sub
Speicher und schliess das Dokument.
Nun kannst Du mit folgendem Code jederzeit das Dokument versteckt öffnen und das Makro ausführen
(Pfad und Namen in den ersten vier Zeilen entsprechend anpassen an das zu öffnende Dokument)
Code: Alles auswählen
Sub Main
sURL = "C:\meinPfad\meinVerstecktZuOeffnendesDokument.ods"
sLibName = "Standard"
sModuleName = "Module1"
sMakroName = "MakroInDocument2"
sURL = ConvertToURL(sURL)
Dim args(0) as new com.sun.star.beans.PropertyValue
args(0).Name = "Hidden"
args(0).Value = True
oDocument2 = StarDesktop.loadComponentFromURL(sURL, "_blank", 0, args)
sScriptURI = "vnd.sun.star.script:" & sLibName & "." & sModuleName & "." & sMakroName & "?language=Basic&location=document"
oScript = oDocument2.ScriptProvider.getScript(sScriptURI)
REM Mit Parameter
oScript.invoke(Array("blaParameter"),Array(1),Array())
REM oder ohne Parameter
REM oScript.invoke(Array(dummy),Array(),Array())
oDocument2.close(True)
End Sub