Wenn ich mein Macro in LO bearbeite geht es unter OO nicht mehr!

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

Moderator: Moderatoren

erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Wenn ich mein Macro in LO bearbeite geht es unter OO nicht mehr!

Beitrag von erikafuchs »

Verflixt nochmal!
Jetzt muss ich dauernd überprüfen, ob mein Rechentrainer auch noch in LibreOffice wie gewünscht funktioniert (tut er nicht!) und wenn ich ihn in LibreOffice bearbeite, funktioniert er unter OpenOffice nicht mehr. Irgendwer hat mir gesagt, dass die Passworte in den beiden Versionen verschieden geschützt werden und daher funktioniert mein Programm unter OpenOffice nicht nur nicht, ich kann die Macrobibliothek auch nicht öffnen. Ich muss daher alle Änderungen von der LibreOffice Version in die OpenOffice Version übertragen.

Die Lösung wäre, in LO das Passwort zu löschen und es in OO wieder zu setzen. Oder geht das auch anders? Ich habe Angst, irgendwann zu vergessen, mein Passwort wieder zu aktivieren.
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Wenn ich mein Macro in LO bearbeite geht es unter OO nicht mehr!

Beitrag von Stephan »

Die Lösung wäre, in LO das Passwort zu löschen und es in OO wieder zu setzen. Oder geht das auch anders? Ich habe Angst, irgendwann zu vergessen, mein Passwort wieder zu aktivieren.
z.B. arbeite bei der Entwicklung genenerell mit einem Dokument mit ungeschützten Makrobibliotheken (das dann in OO und LO bearbeitbar ist) und erzeugen nach der Bearbeitung jeweils eine frische Dokumentkopie mit geschützten Makro-Bibliotheken (einmal von OO aus, einmal von LO aus):

Code: Alles auswählen

Sub Speichern_und_Passwort()
	Speichername = ConverttoURL("D:\MeineDatei.ods")
	
	If Msgbox("Wollen Sie den aktuellen Stand des Dokuments als Kopie " & _
		"speichern und die Makrobibliotheken verschlüsseln?",32+4,"") <> 6 Then Exit Sub
		
	ThisComponent.Store()	
		
	ThisComponent.BasicLibraries.changeLibraryPassword("meineBibliothek", "", "12345678")
	
	ThisComponent.StoreToURL(Speichername, Array())
	
	ThisComponent.setModified(False)
	document = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	dispatcher.executeDispatch(document, ".uno:Reload", "", 0, Array())

	Msgbox "Kopie gespeichert."
End Sub
Da Du Dokumentänderungen ohnehin testen solltest ist es eigentlich müßig die Frage zu diskutieren das vorstehendes Makro jeweils von OO UND LO aus für dieselbe Datei gestartet werden muss.
Trotzdem darfst Du gerne versuchen das Makro so erweitern das es von OO aus eine Kopie mittels OO und eine Kopie mittels LO speichert (Nein, ich habe dazu nichts Fertiges.)


Gruß
Stephan
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Wenn ich mein Macro in LO bearbeite geht es unter OO nicht mehr!

Beitrag von erikafuchs »

Na, das ist aber doch fast eine fertige Lösung.
erzeugen nach der Bearbeitung jeweils eine frische Dokumentkopie mit geschützten Makro-Bibliotheken (einmal von OO aus, einmal von LO aus)
... mache ich da einen Denkfehler? Wenn du zwei verschiedene Dokumentkopien erstellst, bedeutet das doch auch, dass du zwei verschiedene Versionen weitergibts? Das wollt ich ja gerne vermeiden. Wenn ich meine Arbeitskopie nicht mehr mit Passwort schütze kann ich sie ja in OO und LO jeweils bearbeiten. Und wenn ich dann eine Vorlagendatei für meine Schüler in OO erstelle, dann läuft die ja sowohl in OO und LO, ich darf sie nur nicht LO erstellen. Oder brauche ich wirklich zwei Versionen? Ist das mit dem Passwort möglicherweise der Grund, dass mein Rechentrainer in LO sehr lange zum Speichern braucht (das macht mein Rechentrainer nämlich immer automatisch nach 10 Aufgaben)?

Ich muss jetzt halt wohl die Versionen so markieren, dass ich erkennen kann, wie sie bearbeitet wurden. Manchmal schicken mir Schüler ihre Datei und wenn die in LO bearbeitet wurde, kann ich sie in OO weder ausprobieren noch die makros einsehen. Um das zu unterscheiden ist mir nur der Befehl "if getSolarisVersion>500" eingefallen, oder gibt es da was Eleganteres?

Nochwas: Mir scheint, nach dem Öffnen in LO wird auch eine wichtige Zelle so geändert, sodass sie in OO einen Fehler erzeugt. Die Formel "KALENDERWOCHE(HEUTE();"2)" wird in LO zu "KALENDERWOCHE(HEUTE()))". Das muss ich aber nochmal überprüfen.
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Wenn ich mein Macro in LO bearbeite geht es unter OO nicht mehr!

Beitrag von Stephan »

... mache ich da einen Denkfehler? Wenn du zwei verschiedene Dokumentkopien erstellst, bedeutet das doch auch, dass du zwei verschiedene Versionen weitergibts?
Ja und nein. Ja, es sind 2 Versionen, aber nein, es gibt inhaltlich keinen Unterschied außer das der Schutz der Makrobibliotheken einmal kompatibel zu OO gesetzt ist und einmal kompatibel zu LO.
Und das ist ja wohl offensichtlich genau das was Du erreichen willst und wofür Du lediglich nach einer Arbeitserleichterung fragtest.

Falls das, wider mein Erwarten, nicht Deine Absicht ist, dann ist halt meine Antwort unzutreffend.


Gruß
Stephan
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Wenn ich mein Macro in LO bearbeite geht es unter OO nicht mehr!

Beitrag von erikafuchs »

Ja doch klar - genau das ist es! Aber wenn ich das richtig sehe, ändert LO ja selbstständig die Verschlüsselung des Passwortes auch wenn ich die Vorlage in OO erstellt habe - oder macht das einen Unterschied zu dem Fall, dass ich die Vorlage in LO nochmals extra abspeichere?
Antworten