Modul per Makrobefehl löschen
Moderator: Moderatoren
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Modul per Makrobefehl löschen
Hallo Leute!
Kann man per Makrobefehl ein Makromodul löschen? Ich habe dazu nichts gefunden - außer: in VBL scheint das zu gehen.
Pit
Kann man per Makrobefehl ein Makromodul löschen? Ich habe dazu nichts gefunden - außer: in VBL scheint das zu gehen.
Pit
Re: Modul per Makrobefehl löschen
Hey Pit,
ja, kannst Du.
Befehl:
Aber Achtung! Auch danach ist das Zeug alles noch im Speicher. An sich müsstest Du danach LO schliessen (dadurch wird der Speicherinhalt zurückgeschrieben ins Profil - und nun ist auch das gelöschte Modul wirklich weg) und danach neu starten.
Falls Du das Modul (und somit den Inhalt) - nur ersetzen willst - replaceByName(). Aber auch da kann es zu lustigen Effekten kommen;)
VG
Tom
ja, kannst Du.
Befehl:
Code: Alles auswählen
GlobalScope.BasicLibraries.getByName("<NameDerBibliothek>").removebyName("<NameDesModuls>")
Falls Du das Modul (und somit den Inhalt) - nur ersetzen willst - replaceByName(). Aber auch da kann es zu lustigen Effekten kommen;)
VG
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Re: Modul per Makrobefehl löschen
Das ist kein Problem. Es ist ja so, dass immer, wenn meine Nutzer 10 Aufgaben gerechnet haben (oder so), die komplette Datei gespeichert wird - damit nichts verloren geht. Es gab sonst immer das Gejammere "ich habe jetzt soviele Aufgaben gerechnet und die sind jetzt alle weg!". Die Datei ist aber 775kB groß - und das dauert halt einen Moment. In meinem Rechentrainer sind aber einige Module, die die/der Schüler/in nicht braucht (Das sind Optionen für Lehrer/innen: RechenDuell, die Tests), die würde ich beim Erstellen der Schülerdateien gerne löschen - dann ist der Rechentrainer schon mal nur noch 714kB groß - vielleicht geht das da schon ein Bisschen schneller.
Bei dieser Gelegenheit: Eigentlich müsste ich nur eine der 7 Sheets des Rechentrainers speichern - da sind die Daten drin. Gibt es u.U. eine Möglichkeit, nur diesen Sheet zu speichern und nicht die ganze Datei? (Soll ich dafür einen neuen Threat aufmachen?).
Grüße Pit
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Re: Modul per Makrobefehl löschen
Ich komme da nicht weiter:
Mein "Rechentrainer" hat zwischenzeitlich ziemlich viele Optionen und ich möchte ihn, je nach Nutzung etwas verschlanken.
Die verschiedenen Rechentrainer, z.B. die Testversion oder das Rechenduell werden aus der Vorlagendatei Rechentrainer.ots erstellt.
Ich hab etwas gesucht und zusätzlich zu Thomas' Code ein Seite von Andrew Pitonyak mit den entsprechenden ausführlicheBeschreibungen gefunden:
https://flylib.com/books/en/4.290.1.156/1/
Der Code:
Erstelle ich allerdings eine Vorlagendatei und führe beim Start den Code aus, erfolgt eine Fehlermeldung, die Datei stürzt ab und nach dem Öffnen ist die gesamte Bibliothek weg.
Also habe ich gedacht, probiere ich es mit der Aufhebung des Passwortschutzes, wie beschrieben:
Pit
Mein "Rechentrainer" hat zwischenzeitlich ziemlich viele Optionen und ich möchte ihn, je nach Nutzung etwas verschlanken.
Die verschiedenen Rechentrainer, z.B. die Testversion oder das Rechenduell werden aus der Vorlagendatei Rechentrainer.ots erstellt.
Ich hab etwas gesucht und zusätzlich zu Thomas' Code ein Seite von Andrew Pitonyak mit den entsprechenden ausführlicheBeschreibungen gefunden:
https://flylib.com/books/en/4.290.1.156/1/
Der Code:
funktioniert soweit. Die Bibliothek "Rechentrainer hat allerdings ein Passwort. Der Code funktioniert sogar nach einem Schließen und Wiederöffnen der Datei, wobei, wie ich vermute, der Passwortschutz wiederhergestellt wird.dim NamenArray()
NamenArray=Array("NeuerRT", "Lehrer", "Test", "Kursdateien", "Duell")
NamenArray=GlobalScope.ThisComponent.BasicLibraries.getByName("Rechentrainer").getElementNames()
for n=0 to 4
if GlobalScope.ThisComponent.BasicLibraries.getByName("Rechentrainer").hasbyName(NamenArray(n)) then
GlobalScope.ThisComponent.BasicLibraries.getByName("Rechentrainer").removebyName(NamenArray(n))
end if
next
Erstelle ich allerdings eine Vorlagendatei und führe beim Start den Code aus, erfolgt eine Fehlermeldung, die Datei stürzt ab und nach dem Öffnen ist die gesamte Bibliothek weg.
Also habe ich gedacht, probiere ich es mit der Aufhebung des Passwortschutzes, wie beschrieben:
Zunächst erhalte ich die Meldung "true" - die Bibliothek hat also ein Schutz. Dann öffnet sich aber der Makroeditor und zeigt einen Laufzeitfehler in der zweiten Zeile "unbekannt. Interner Fehler $(arg1)". Da der Makroeditor angezeigt wird, nehme ich an, dass also der Passwortschutz aufgehoben ist. Die dritte Zeile wird also nicht mehr ausgeführt. Was mache ich falsch? hat jemand eine Idee?print GlobalScope.ThisComponent.BasicLibraries.isLibraryPasswordProtected("Rechentrainer")
GlobalScope.ThisComponent.BasicLibraries.verifyLibraryPassword("Rechentrainer","*****")
print GlobalScope.ThisComponent.BasicLibraries.isLibraryPasswordVerified("Rechentrainer")
Pit
Re: Modul per Makrobefehl löschen
Code: Alles auswählen
GlobalScope.ThisComponent.BasicLibraries '...
Code: Alles auswählen
GlobalScope.BasicLibraries '...
ThisComponent.BasicLibraries '...
Gruß
Stephan
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Re: Modul per Makrobefehl löschen
Hallo Stefan,
vielen Dank, wieder was dazugelernt .... hilft aber nicht (eigentlich). . Ich habe zudem den Code so abgeändert, dass der Schutz nur aufgehoben wird, wenn er auch vorhanden ist:
Irgendwas ist falsch an meiner Zeile "ThisComponent.BasicLibraries.verifyLibraryPassword("Rechentrainer","****")". Auf obengenannter Seite steht dazu: Ich schreibe "(eigentlich)", weil ich jetzt festgestellt habe, dass meine Module auch gelöscht werden, wenn der Passwortschutz nicht aufgehoben wird - das hätte ich nicht vermutet - aber ok, es funktioniert!.
vielen Dank, wieder was dazugelernt .... hilft aber nicht (eigentlich). . Ich habe zudem den Code so abgeändert, dass der Schutz nur aufgehoben wird, wenn er auch vorhanden ist:
...Ich bekomme weiter die gleiche Fehlermeldung.if not ThisComponent.BasicLibraries.isLibraryPasswordVerified("Rechentrainer") then
ThisComponent.BasicLibraries.verifyLibraryPassword("Rechentrainer","****")
end if
Irgendwas ist falsch an meiner Zeile "ThisComponent.BasicLibraries.verifyLibraryPassword("Rechentrainer","****")". Auf obengenannter Seite steht dazu: Ich schreibe "(eigentlich)", weil ich jetzt festgestellt habe, dass meine Module auch gelöscht werden, wenn der Passwortschutz nicht aufgehoben wird - das hätte ich nicht vermutet - aber ok, es funktioniert!.
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Re: Modul per Makrobefehl löschen
Tja - zu früh gefreut. Aus meiner Vorlagendatei wird einwandfrei eine Rechentrainer Datei erstellt, die Module und auch die ungenutzten Tabellenblätter werden auch gelöscht. Das Kennwort der Makrobibliothek funktioniert aber nicht mehr!