Speichern mit macro -- Überschreibschutz

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

Moderator: Moderatoren

neandr
*
Beiträge: 11
Registriert: Di, 18.10.2011 15:32

Speichern mit macro -- Überschreibschutz

Beitrag von neandr »

Noch 'n Bitte zur Einarbeitung in die Macro Technik.

Mit dem Beitrag viewtopic.php?f=18&t=50608#p187791 wurde mir schon geholfen ein Writer Dokument zu speichern.
Ich hätte vermutet, das die Methode

Code: Alles auswählen

REM *** Zeige Ergebnis ***
    Dim iAntwort As Integer
    iAntwort = MsgBox("Doc speichern: " + ostoreUrl + "   Nächster Wert: " + (nValue +1), 1, "Speichern?")
    If iAntwort = 2 Then
        End
    End If

REM *** Speichern ***
    thisComponent.storetourl(ostoreUrl,args())
dem Dialog "Speichern unter .. " entspricht und somit einen Fehler erzeugt, wenn für den erzeugten Dokumentnamen bereits eine Datei vorhanden ist. Leider ist das nicht der Fall. Sicher gibt's dafür einen Kniff.
Kann mir bitte jemand hier weiterhelfen.

Günter
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Speichern mit macro -- Überschreibschutz

Beitrag von komma4 »

neandr hat geschrieben:

Code: Alles auswählen

thisComponent.storetourl(ostoreUrl,args())
dem Dialog "Speichern unter .. " entspricht
Das ist falsch.
storeToURL entspricht dem EXPORT-Verhalten.

Verwendest Du dagegen storeAsURL entspricht die Codierung dem "Datei>Speichern unter..."
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
neandr
*
Beiträge: 11
Registriert: Di, 18.10.2011 15:32

Re: Speichern mit macro -- Überschreibschutz

Beitrag von neandr »

Auch wenn ich im Posting nur "storetourl" habe, ich hatte auch mit "storeAsUrl" versucht .. und gerade nochmal getestet. Leider mit beiden Funktionen das gleiche Verhalten ... es wird einfach drüber gebügelt :shock:

Und das ich auch bestimmt das richtige Makro benutze, habe ich die MsgBox Anzeige verändert .. und die Änderung wird auch angezeigt! Also irgendwas ist wohl noch falsch :?
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Speichern mit macro -- Überschreibschutz

Beitrag von komma4 »

Mit meinem ersten Posting wollte ich nur auf den Widerspruch aufmerksam machen 8)
neandr hat geschrieben:es wird einfach drüber gebügelt
Wenn Du das nicht willst, dann besetze Deine Eigenschaften-Variable args (wozu wird die sonst deklariert?) einfach

Code: Alles auswählen

Dim args(0) As New com.sun.star.beans.PropertyValue
	args(0).Name = "Overwrite"
	args(0).Value = FALSE
Das ergibt aber einen Laufzeitfehler (wenn die Datei schon vorhanden ist)- den willst Du sicherlich auch nicht :lol:


Also prüfe vor dem Speichern-Versuch das Vorhandensein

Code: Alles auswählen

' check if such a file exist
If FileExists( ostoreUrl ) then
   ' yes there is one
   ' issue a message to inform user 
   msgbox "Dokument bereits vorhanden" & chr(13) & ostoreUrl , & _
	64 ,sMakroName & sMakroVersion
else
   thisComponent.storetourl(ostoreUrl,args())

End If
(kopiert aus meiner Makro-Kiste, nicht mit Deinem Code getestet!)

Ist es das, was Du wolltest**?



** Günter: bei den Postings ganz klar formulieren, WAS gewollt ist (ein Nicht-Überschreiben steht nämlich nirgends), dann bekommst Du auch gleich die richtigen Antworten. Und bitte IMMER OOo-Version und Betriebssystem angeben; Danke!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
neandr
*
Beiträge: 11
Registriert: Di, 18.10.2011 15:32

Re: Speichern mit macro -- Überschreibschutz

Beitrag von neandr »

@Winfried

Gelobe mich zu bessern :)

Bin etwas in Eile .. wie immer kam diese Anforderung wie Weihnachten .. völlig unerwartet, sodaß ich nicht die nötige Zeit habe/hatte intensiv zu forschen.

Also tausend Dank, dein Vorschlag mit FileExists ist wohl der richtige Weg!

Günter
Antworten