Merkwürdiges Verhalten beim Blattschutz

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

Moderator: Moderatoren

delta9
****
Beiträge: 126
Registriert: Fr, 19.03.2010 15:28

Merkwürdiges Verhalten beim Blattschutz

Beitrag von delta9 »

Hallo,
ein Makro setzt den Blattschutz und hebt ihn auf.
Allerdings gibt es merkwürdige Unterschiede zum manuell gesetzten Blattschutz (als mit rechte Maustaste auf den Blattnamen usw...)

manuell:
  • ein Schlosssymbol erscheint (bzw. verschwindet beim aufheben) neben dem Blattnamen
  • alles ist geschützt, zum Beispiel auch ein Rechteck als grafische Form
per Makro:
  • KEIN Schlosssymbol erscheint (bzw. verschwindet nicht beim aufheben) neben dem Blattnamen
  • Nur die Zellen sind geschützt, zum Beispiel NICHT ein Rechteck als grafische Form
Datei anbei. Auszug:

Code: Alles auswählen

blatt.protect("xxx")
Andererseits: Wenn ich mich darauf verlassen könnte, dass nur die Zellen und nicht das grafische Objekt geschützt ist, dann könnte ich letztlich auf das ganze Makro verzichten, das nur zum manuellen rauskopieren eines Diagrammes gedacht war, ich befürchte aber, dass das kein stabiles Verhalten ist.


Habe Libre office Version: 6.3.5.2 (x64)

Stefan
delta9
****
Beiträge: 126
Registriert: Fr, 19.03.2010 15:28

Re: Merkwürdiges Verhalten beim Blattschutz

Beitrag von delta9 »

Anders formuliert:
In Excel VBA gibt es so was wie

Code: Alles auswählen

blatt.Protect Password:=Blattschutzname, DrawingObjects:=False, Contents:=True
Man kann also definieren, was geschützt werden soll und was nicht.
Gibt es so was auch in Libre Office?
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Merkwürdiges Verhalten beim Blattschutz

Beitrag von F3K Total »

Moin,
per Makro ist das Schlosssymbolproblem bei mir mit LO 7.2.5 kein Problem, siehe kleines Video und Beispieldatei anbei.

Code: Alles auswählen

Sub un_protect(event)
    oButton =  event.source.model
    if oButton.label = "protect" then
         thisComponent.Sheets(0).protect("")
         oButton.label = "unprotect"
    else
        thisComponent.Sheets(0).unprotect("")
        oButton.label = "protect"
    endif
End Sub
Gruß R
Dateianhänge
Protect_unprotect.ods
(14.26 KiB) 105-mal heruntergeladen
Blattschutz.zip
nur entpacken
(206.87 KiB) 124-mal heruntergeladen
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Merkwürdiges Verhalten beim Blattschutz

Beitrag von Toxitom »

Hey,

hmm, interessant. In LO 7.0.2.x taucht das Schlosssymbol nicht auf. Scheint also als Bug gefixt worden zu sein :)

Aber: Vielleicht kannst Du (F3K) noch folgendes testen:
- Lege doch bitte mal eine Grafik auf die Seite - z.b. aus der Gallery.
- Sperre dann die Seite
- versuche jetzt die Grafik zu markieren und zu verschieben (mit der Maus).

Geht hier bei mir nach wie vor problemlos - trotz Sperre. Und das war ja, was der Fragesteller bemängelt hatte. Ich halte das auch für einen Fehler (Bug).

Sperre ich die Tabelle per Menübefehl - ist die Grafik auch gesperrt. So sollte es auch per Makro sein.

Würde mich über eine Rückmeldung freuen ....ich weiss noch nicht, wann ich update;)

VG Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Merkwürdiges Verhalten beim Blattschutz

Beitrag von F3K Total »

Hallo Toxitom,
du hast recht, mit meinem Makro bleibt eine Grafik trotz Blattschutz verschieblich, solange das Dokument nicht gespeichert wurde.
Ein zusätzliche Codezeile

Code: Alles auswählen

ThisComponent.store
bringt dann das gleiche Verhalten wie über das Menü.
Siehe Beispiel anbei.

Gruß R
Dateianhänge
Protect_unprotect.ods
(15.84 KiB) 102-mal heruntergeladen
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Merkwürdiges Verhalten beim Blattschutz

Beitrag von Toxitom »

Ah, perfekt. Das funktioniert:))

Danke für den Tipp.

VG Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

Re: Merkwürdiges Verhalten beim Blattschutz

Beitrag von little fingers »

Hallo
Geht das auch mit mehreren Tabellenblättern gleichzeitig?
Gruß Ingo
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Merkwürdiges Verhalten beim Blattschutz

Beitrag von F3K Total »

Ja, das geht auch.
little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

Re: Merkwürdiges Verhalten beim Blattschutz

Beitrag von little fingers »

Hi!

Was müsste ich denn eintragen, wenn ich verschiedene Tabellenblätter sperren, bzw entsperren möchte!

Gruß Ingo
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Merkwürdiges Verhalten beim Blattschutz

Beitrag von F3K Total »

Moin,
z.B.

Code: Alles auswählen

Sub un_protect(event)
    Dim osheets (4) as String ' 4 = Anzahl der Tabellenblätter -1
    oSheets(0) = "Tabelle1"
    oSheets(1) = "Tabelle2"
    oSheets(2) = "Tabelle3"
    oSheets(3) = "Tabelle4"
    oSheets(4) = "Tabelle5"
    oButton =  event.source.model
    if oButton.label = "protect" then
        for i = 0 to 4
            thisComponent.Sheets.getbyName(oSheets(i)).protect("")
        next i
         oButton.label = "unprotect"
    else
        for i = 0 to 4
            thisComponent.Sheets.getbyName(oSheets(i)).unprotect("")
        next i
        oButton.label = "protect"
    endif
    thisComponent.store
End Sub
Beispiel anbei
Gruß R
Dateianhänge
Protect_unprotect.ods
(16.11 KiB) 98-mal heruntergeladen
little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

Re: Merkwürdiges Verhalten beim Blattschutz

Beitrag von little fingers »

Funzt Super...Vielen Dank

Gruß Ingo
Antworten