Um Tabellen und Zellen per Makro zu schützen muss man einige Besonderheiten beachten.
Tabellen kann man mit Passwort schützen. Dies verhindert aber nur den Eingriff in
die Tabelle.
Der Inhalt der Tabelle kann trotzdem durch ein einfaches Kopieren der Zellen in eine neue Datei
ohne Schutz übertragen werden. Um dies für die Formeln zu verhindern sollte man diese
ausblenden. ( Format-> Zellen ->Zellschutz -> Formeln ausblenden aktivieren.
Zellen sind nur dann geschützt wenn die Tabelle geschützt ist. Möchte man, dass Zellen
ungeschützt sind muß, man diese vor dem Schutz entsperren. Auch per Makro ist dies nur
möglich wenn die Tabelle ungeschützt ist.
Man darf auf keinen Fall den Tabellen- und Zellenschutz mit einem echten Schutz der
Daten
und Formeln verwechseln. Es handelt sich vor allem um einen Schutz vor falschen Eingaben in
einem Formular.
Wie werden einzelne Tabellen geschützt?
odoc=thiscomponent
oSheets=odoc.sheets
oSheet = oDoc.Sheets(0)
'oder oSheet = oDoc.Sheets().getByName("Tabelle1")
oSheet.protect("Test")
Passwort : Test
Mit oSheet.unprotect("Test") wird der Schutz aufgehoben.
Um einzelne Zellen zu schützen oder den Schutz zu deaktiveren verwendet man das Struct
com.sun.star.util.CellProtection
Dim myProtection As New com.sun.star.util.CellProtection
ocell = mysheet.getCellByPosition(0,0)
myProtection.IsLocked=false
oCell.CellProtection=myProtection
Weitere Parameter in dem Struct sind:
isFormulaHidden -> Die Formel wird bei Tabellenschutz ausgeblendet.
isHidden -> Der Inhalt wird bei Tabellenschutz ausgeblendet.
isPrintHidden -> Der Inhalt der Zelle wird bei Tabellenschutz nicht gedruckt.
Um also eine Zelle in einer geschützten Tabelle zu ändern muß man beides durchführen
odoc=thiscomponent
oSheets=odoc.sheets
oSheet = oDoc.Sheets(0)
oSheet.unprotect("Test")
Dim myProtection As New com.sun.star.util.CellProtection
ocell = mysheet.getCellByPosition(0,0)
myProtection.IsLocked=false
oCell.CellProtection=myProtection
oSheet.protect("Test")
Eine kleine kurze Prozedur für den Schutz von Zellen steht in den Tools