Makro beim Speichern ausführen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
schane65
****
Beiträge: 153
Registriert: Fr, 11.03.2005 18:19
Wohnort: Visbek

Makro beim Speichern ausführen

Beitrag von schane65 »

Hallo !

Ich habe eine Datei, in der ich einer Schaltfläche ein Makro zugewiesen habe. Nun möchte ich aber, dass das Makro, insbesondere die Speicherung der Datei als PDF in dem Moment erfolgt, wenn ich die Datei abspeichere.
Makro im Moment:

Code: Alles auswählen

REM  *****  BASIC  *****


sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///F:/BSM/BSM_Plan_12_09.pdf"
args1(1).Name = "FilterName"
args1(1).Value = "calc_pdf_Export"

dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Save", "", 0, Array())


end sub


Kann mir da jemand helfen?

Gruß Andy


Moderation,4
: Beitrag ins zuständige Unterforum verschoben; CODE-tags gesetzt
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro beim Speichern ausführen

Beitrag von Stephan »

Extras-Anpassen, Register EReignisse und das Makro dem gewünschten Ereignis zuordnen.



Gruß
Stephan
Benutzeravatar
schane65
****
Beiträge: 153
Registriert: Fr, 11.03.2005 18:19
Wohnort: Visbek

Re: Makro beim Speichern ausführen

Beitrag von schane65 »

Danke Stephan !

Das hat geklappt. Nur hatte ich mir das jetzt so vorgestellt, dass wenn jemand die Originaldatei geöffnet hat, jemand anderes, der im Netzwerk auch Zugriff hat, dann die PDF-Datei öffnet, da bei uns eine schreibgeschützte Kopie der Originaldatei nicht geöffnet werden kann. Wenn derjenige die PDF Datei jedoch offen hat und der andere eine Speicherung vornimmt, kann logischerweise die PDF Datei nicht überschrieben werden, da sie ja geöffnet ist. Oder gibt es da eine Möglichkeit, den anderen rauszuwerfen?

Gruß Andreas
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro beim Speichern ausführen

Beitrag von Stephan »

Oder gibt es da eine Möglichkeit, den anderen rauszuwerfen?
Pauschalantwort: Nein

Grundlegende Antwort:
sowas kann ich nicht vom 'grünen Tisch' ohne jegliche Kenntniss der konkreten Umgebung und Implemetierung und der eigentlichen Zielsetzung entscheiden.
Im Prinzip muß zunächst einmal geklärt werden wie das Ganze funktionieren soll und dann muß es entsprechend implementiert werden.


Ganz allgemein könnte man vorschlagen, um das Problem zumindest zu umschiffen, einfach im Falle das das PDF geöffnet ist jeweils eine im Namen deutlich gekennzeichnete neue Version zu speichern, so das für jeden späteren NUtzer ersichtlich ist welche PDF-Datei die letztaktuelle ist. z.B. indem man entweder einen Zeitstempel:

Code: Alles auswählen

args1(0).Value = "file:///F:/BSM/BSM_Plan_12_09_2010_12_30_144211.pdf"
(also Dateierstellung am 30.12.2010 um 14:42:11)

oder eine Versionskennzeichnung:

Code: Alles auswählen

args1(0).Value = "file:///F:/BSM/BSM_Plan_12_09_a.pdf"
(also 'a-Version' der DAtei)

im Dateinamen hinzufügt.


Alles das hat aber wenig mit konkreter StarBasic-Programmierung als vielmehr mit allgemeinen Implementierungsüberlegungen zu tun.


Gruß
Stephan
Antworten