protect in Calc-Basic

Guten Tag LO-Listlinge,

über die Methode protect und unprotect kann ich in Calc
Tabellenblätter mittels Basic schützen bzw. freigeben.

Wie kann ich eine Tabelle mit protect schützen und die
Option zum Verhindern der Anwahl geschützter Zellen
übergeben?

Hallo Jörg

Guten Tag LO-Listlinge,

über die Methode protect und unprotect kann ich in Calc
Tabellenblätter mittels Basic schützen bzw. freigeben.

Wie kann ich eine Tabelle mit protect schützen und die
Option zum Verhindern der Anwahl geschützter Zellen
übergeben?

Diese Option ist offenbar neu in LO hinzugekommen, ich hab nichts gefunden um die Einstellung direkt in einer geöffneten Datei zu setzen.

Evtl. gelingt dir vorläufig ein "Würkaround" : Entpacke die gespeicherte und geschlossene Datei und ersetze in der content.xml den Text
<table:table-protection table:select-protected-cells="true"
durch
<table:table-protection table:select-protected-cells="false"
und pack wieder ein.

Gruß Werner

Guten Tag Werner Tietz,

danke für deine Antwort.

über die Methode protect und unprotect kann ich in Calc
Tabellenblätter mittels Basic schützen bzw. freigeben.

Wie kann ich eine Tabelle mit protect schützen und die
Option zum Verhindern der Anwahl geschützter Zellen
übergeben?

Diese Option ist offenbar neu in LO hinzugekommen, ich hab nichts
gefunden um die Einstellung direkt in einer geöffneten Datei zu setzen.

Willkommen im Club.

Evtl. gelingt dir vorläufig ein "Würkaround" : Entpacke die gespeicherte
und geschlossene Datei und ersetze in der content.xml den Text
<table:table-protection table:select-protected-cells="true"
durch
<table:table-protection table:select-protected-cells="false"
und pack wieder ein.

Das habe ich ausprobiert und das funktioniert. Das ist allerdings
umständlicher als rechte Maustaste auf Reiter, alle anwählen und
dann Tabellen schützen. :wink:

Ich suche nach einer Möglichkeit, Makrogesteuert alle Tabellen in der
oben beschriebenen Form zu schützen bzw. freizugeben. Der Status wird
dann in Zelle "C1" gekennzeichnet.

'_________________________________________________________________

Sub TabellenSchutzAn
        Dim oDoc as Object
        Dim oSheet as Object
        Dim eSheets As Object
        Dim oCell as Object
  
        oDoc = ThisComponent
        eSheets = oDoc.getSheets.createEnumeration
  
        While eSheets.hasMoreElements
        oSheet = eSheets.nextElement()

                oCell = oSheet.getCellRangeByName("C1")
                oCell.String = "°"
                oSheet.protect("")

' MsgBox "Nächster Tabellenname ist: " & oSheet.getName & "."
        Wend
        
        MsgBox "Tabellenschutz wurde aktiviert!" & CHR$(13) &_
        "In Zelle C1 wurde ""°"" eingetragen."

End Sub

'_________________________________________________________________

Sub TabellenSchutzAus
        Dim oDoc as Object
        Dim oSheet as Object
        Dim eSheets As Object
        Dim oCell as Object
  
        oDoc = ThisComponent
        eSheets = oDoc.getSheets.createEnumeration
  
        While eSheets.hasMoreElements
        oSheet = eSheets.nextElement()

                oCell = oSheet.getCellRangeByName("C1")
                oSheet.unprotect("")
                oCell.String = ""

' MsgBox "Nächster Tabellenname ist: " & oSheet.getName & "."
        Wend
        
        MsgBox "Tabellenschutz wurde deaktiviert!" & CHR$(13) &_
        "In Zelle C1 wurde """" eingetragen."
End Sub

'_________________________________________________________________

Hallo Jörg

Evtl. gelingt dir vorläufig ein "Würkaround" : Entpacke die gespeicherte
und geschlossene Datei und ersetze in der content.xml den Text
<table:table-protection table:select-protected-cells="true"
durch
<table:table-protection table:select-protected-cells="false"
und pack wieder ein.

Das habe ich ausprobiert und das funktioniert. Das ist allerdings
umständlicher als rechte Maustaste auf Reiter, alle anwählen und
dann Tabellen schützen. :wink:

Natürlich ist das *per Hand* umständlich, es wäre aber eine Überlegung wert die Routine automatisiert von einem entsprechenden Script erledigen zu lassen.

Gruß Werner