Öffnen-Dialog per Makro aufrufen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Öffnen-Dialog per Makro aufrufen

von Stephan » Mi, 04.01.2006 00:35

Die Methode "loadComponentFromURL()" war mit schon bekannt.
ganz offensichtlich nicht.
Beim Öffnen einer Datei über die Methode "loadComponentFromURL()" werden Makros aber deaktiviert.
Ja und das ist ganz einfach falsch, weshalb ich bezweifle das Du die genannte Methode kennst.

Die Methode beinhaltet beim Aufruf ein Parameterarry, je nach dort angegebenen Parametern läuft sich beispielsweise auch die Makrausführung unterdrücken oder zulassen.

Bei Thomas ist das Array: Arg()

Da mußt Du lediglich den entsprechenden Parameter mit Namen "MacroExecutionMode" übergeben, die möglichen Werte sind:

NEVER_EXECUTE - Do not execute a macro.
FROM_LIST - Execute macros from a list based on configuration.
ALWAYS_EXECUTE - Execute, but warn if the configuration says to.
USE_CONFIG - Do what the configuration says to do.
ALWAYS_EXECUTE_NO_WARN - Run the macro and do not warn.
USE_CONFIG_REJECT_CONFIRMATION - The configuration specifies what to do when the user says not to
run macros; do that.
USE_CONFIG_APPROVE_CONFIRMATION - The configuration specifies what to do when the user says to run
macros; do that.

Als Beispiel also führt dieser Parameter alle vorhandenen Makros ohne Nachfrage aus:

Code: Alles auswählen

Arg(1).Name = "MacroExecutionMode"
Arg(1).Value = com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE_NO_WARN


Ich weiß, dass Dispatcher-Makros für den Fachmann ein Graus sind.


Jein, das eigentliche Problem ist hier jedoch das Du Verwirrung stiftest weil Du Dich nichst auskennst. Nein, zum Fragen ist das Forum da, nur etwas abzulehnen weil Du vermutest das es nicht geht, ist schon irritierend, weil das dann möglicherweise falsch verstanden wird.



Gruß
Stephan

von Friedrich » Di, 03.01.2006 21:13

Hallo Thomas,
vielen Dank für die schnelle Antwort.

Die Methode "loadComponentFromURL()" war mit schon bekannt. Warum ich die nicht verwenden will, hat folgenden Hintergrund:
In dem zu öffnenden Dokument ist ein Makro enthalten, das beim Öffnen ausgeführt werden soll. Beim Öffnen einer Datei über die Methode "loadComponentFromURL()" werden Makros aber deaktiviert. Aus Sicherheitsgründen, was auch richtig ist.

Beim Öffnen über den Öffnen-Dialog habe ich aber die entsprechende Auswahlmöglichkeit.
Deshalb wollte ich diesen Weg wählen.

Es würde ja mit dem Dispatcher-Makro auch funktionieren, wenn ich dort das Startverzeichnis festlegen könnte.

Viele Grüße
Friedrich

PS: Ich weiß, dass Dispatcher-Makros für den Fachmann ein Graus sind.

von Toxitom » Di, 03.01.2006 20:04

Hallo Friedrich,
wie man eine Datei öffnet, habe ich nicht herausgefunden.
Na ja, nicht mit den Dialogen! die liefern dir maximal den ausgewählten Dateinamen und den Pfad - den Rest musst du dann schon selbst machen - in Basic.

Hierzu nutzt du die Methode "loadComponentFromURL()" welche auf den StarDesktop angewendet wird und vier Parameter erwartert:

Code: Alles auswählen

vDoc = StarDesktop.loadComponentFromURL(sURL, "_blank", 0, Arg())
Mit sURL übergibst du die qualifizierte URL der zu öffnenden Datei (also Pfad und Dateiname in URL-Schreibweise), "_blank" bedeutet, dass ein neues Fenster geöffnet wird, die Null (0) ist immer das dritte Argument, und als letztes kannst du noch einen Struct mit Parametern übergeben, welcher aber normalerweise nicht benötigt wird. Du musst aber ein leeres Array übergeben!
Tia - und den String der zu öffnenden Datei liefern dir eben die entsprechenden Dialoge...

Gruss
Thomas

Öffnen-Dialog per Makro aufrufen

von Friedrich » Di, 03.01.2006 17:58

Zum Aufrufen des Öffnen-Dialogs habe ich zwei Makros, die beide nicht das gewünschte Ergebnis bringen.

Das erste Makro ist mit dem Makrorekorder aufgezeichnet. Es funktioniert. Aber leider habe ich keine Möglichkeit gefunden, um das Startverzeichnis (c:\verzeichnis) festzulegen.

Das zweite ist von den StarBasic-FAQ von Michael Dannenhöfer. Hier kann ich das Startverzeichnis festlegen. Der Öffnen-Dialog mit dem festgelegten Startverzeichnis wird angezeigt. In dem Öffnen-Dialog funktioniert alles (z.B. ein neues Verzeichnis anlegen), nur nicht das Öffnen einer markierten Datei.

Zu dem Makro von Michael Dannenhöfer gibt es im Internet etliche Varianten. Manche zeigen in einer Message-Box Pfad und Dateinamen an, wie man eine Datei öffnet, habe ich nicht herausgefunden.

Wer kann mir helfen?

sub OeffnenMakrorekorder
rem define variables
dim document as object
dim dispatcher as object
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:Open", "", 0, Array())
end sub

Sub TestDialogVonDannenhöfer
MyDialog = createunoservice("com.sun.star.ui.dialogs.FilePicker")
myDialog.displaydirectory="c:\"
MyDialog.execute
FileName = MyDialog.Files(0)
End sub

Nach oben