Speichern von Vorlage löscht alle Makros

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

Moderator: Moderatoren

der.milco
***
Beiträge: 51
Registriert: Mo, 07.11.2005 16:44

Speichern von Vorlage löscht alle Makros

Beitrag von der.milco »

Hallo zusammen,
ich nutze OpenOffice 3.0.1 (OOO300m15; Build:9379) unter WinXP.

Ich habe eine Calc-Vorlage mit vielen Schaltflächen und Makros erstellt. Ziel ist es aus der Vorlage .ots ein neues Doument zu erzeugen und es anschließend per Makro-Schaltfläche als .ods zu speichern. Ich nutze dabei den Befehl SaveToUrl.

Bislang hat das alles auch völlig problemfrei funktioniert. Ich habe das unbenannte Dok unter einem festen Datei-Namen speichern, schließen, anschließend wieder öffnen und bearbeiten können.

Doch seit knapp zwei Monaten kann ich in dem neu erzeugten Dok alle Schaltflächen und Makros nutzen. Wenn ich dann speichere geht noch immer alles problemlos. Sobald ich jedoch das Dok schließe und später wieder zum Bearbeiten öffne, sind alle Makros verschwunden und auch alle den Schaltflächen zugeordneten Bildern (Icons).
Ich kann dann zwar selbst in die Zellen der Tabelle schreiben, aber das sollten ja die Dialoge und Makros machen, die ja auf einmal nicht mehr funktionieren.

Beim Vergleich der Dateigrößen, habe ich festgestellt, dass die .ods etwa 30% kleiner ist als die .ots.
Damals waren die Dateigrößen gleich.

Ich habe festgestellt, wenn ich das neue Dok. im Programm über das Menü "Speichern unter" wähle, kann ich das Dok sooft öffnen, schließen, ändern, normal speichern (Strg+S) wie ich will: Alle Funktionen, Makros, Bilder und Dialoge bleiben erhalten.


Hat jmd. ne Idee, warum das so ist? Sollte ich einen anderen Befehl als SaveToUrl benutzen??
Danke für die Hilfe.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Speichern von Vorlage löscht alle Makros

Beitrag von komma4 »

der.milco hat geschrieben:Ich nutze dabei den Befehl SaveToUrl.[...]Sollte ich einen anderen Befehl als SaveToUrl benutzen??
Die Methode gibt es nicht.

Versuche es mal mit storeAsURL
Dokumentation hat geschrieben:This is the normal behavior for UI's "save-as" feature.
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)
der.milco
***
Beiträge: 51
Registriert: Mo, 07.11.2005 16:44

Re: Speichern von Vorlage löscht alle Makros

Beitrag von der.milco »

Ok. Die richtige Variante für mich ist jetzt wohl "storeAsUrl".

Das Problem bleibt jedoch bestehen. Warum bleiben denn aber die Makros erhalten, wenn ich über das Menü "Speichern unter" wähle???

In den Dokumentationen habe ich gelesen, dass man per Filter auch ein bestimmtes Format festlegen kann. Wie lauten denn die Filternamen für OO-Vorlage (ots) und OO-Tabelle (ods)?? Wie muss der Code dann lauten?
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Speichern von Vorlage löscht alle Makros

Beitrag von komma4 »

Ja, war auch ein weiterer Gedanke von mir, dass Du vielleicht nicht die richtigen Filtereinstellungen setzt (war das WE beschäftigt, sonst hätte ich das probiert).

Ich glaube, ich hatte das schon mal die Tage gepostet:

Code: Alles auswählen

REM DannyB Posted: Tue Oct 28, 2003 7:49 pm
REM http://www.oooforum.org/forum/viewtopic.phtml?t=3549
Sub Main
   oFF = createUnoService( "com.sun.star.document.FilterFactory" )
   oFilterNames = oFF.getElementNames()
   
   ' Now print the filter names.
'   For i = LBound( oFilterNames ) To UBound( oFilterNames )
'      Print oFilterNames(i)
'   Next
   
   ' Create a Writer doc and save the filter names to it.
   oDoc = StarDesktop.loadComponentFromURL( "private:factory/swriter", "_blank", 0, Array() )
   oText = oDoc.getText()
   oCursor = oText.createTextCursor()
   oCursor.gotoEnd( False )
   
   ' Print the filter names into a Writer document.
   For i = LBound( oFilterNames ) To UBound( oFilterNames )
      oText.insertString( oCursor, oFilterNames(i), False )
      oText.insertControlCharacter( oCursor, com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False )
   Next
End Sub


Filtereinstellungen über die properties:

Code: Alles auswählen

Dim oParms(0) As New com.sun.star.beans.PropertyValue
oParms(0).Name = "FilterName"
oParms(0).Value = "StarWriter 5.0 Vorlage/Template"
Aus der Kruschelkisten ... ist ungetestet ... Viel Erfolg!
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)
der.milco
***
Beiträge: 51
Registriert: Mo, 07.11.2005 16:44

Re: Speichern von Vorlage löscht alle Makros

Beitrag von der.milco »

Ich habe eine Tabelle und will sie auch als Tabelle speichern und nicht als Writer-Dokument!

Anhand der Filternamen konnte ich leider nicht erkennen, welcher jetzt der richtige ist, um meine Calc-Tabelle wie mit dem Menü-Befehl Strg+S zu speichern. Ich habe einfach mal den Filter "calc8" benutzt, weil er der einzige war, der aktuell und passend scheint. Allerdings bekomme ich beim Auslösen des Speichern-Makros folgenden Fehler:

BASIC-Laufzeitfehler.
Es ist eine Exception aufgetreten
Type: com.sun.star.task.ErrorCodeIOException
Message: .



Was habe ich denn für einen Fehler in meinem Code??

Code: Alles auswählen

Sub ODS8_export
	GlobalScope.BasicLibraries.LoadLibrary("Tools")

	verzeichnis =	"C:\"
	dateiname	=	verzeichnis + "export_calc8" + ".ods"
	dateiurl	 =	converttourl(dateiname)

	dim myProps(1) as New com.sun.star.beans.PropertyValue
	myProps(0).Name = "URL"
	myProps(0).Value = dateiurl
	myProps(1).Name = "FilterName"
	myProps(1).Value = "Calc8"
	thisComponent.storeAsUrl(dateiurl,myProps())
End Sub
Bei der o.g. Fehlermeldung wird die letzte Zeile mit dem Speichern-Befehl markiert.


Gibt es einen besseren Filter, bei dem das nicht passiert oder hat jmd. noch ne ganz andere Lösung??
Antworten