Seite 1 von 1

Speichern von Vorlage löscht alle Makros

Verfasst: Fr, 04.09.2009 13:30
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.

Re: Speichern von Vorlage löscht alle Makros

Verfasst: Fr, 04.09.2009 13:53
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.

Re: Speichern von Vorlage löscht alle Makros

Verfasst: So, 06.09.2009 22:37
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?

Re: Speichern von Vorlage löscht alle Makros

Verfasst: So, 06.09.2009 23:01
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!

Re: Speichern von Vorlage löscht alle Makros

Verfasst: So, 13.09.2009 17:41
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??