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:

Code: Alles auswählen

Sub Main()
Msgbox "Nur ein Test"
End Sub
Nicht geht es mit:

Code: Alles auswählen

myProp(1).name= "Hidden"
  myProp(1).value = True

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