Hallo,
der Makrorekorder schreibt meist nur die Dispatch-Commands,
eben Einzelbefehle, welche irgendetwas aufrufen.
Im Anschluß muss dem Dispatch-Command immer Parameter in Form eines
Eigenschafts-Array's/ ein Struct übergeben werden.
Das alles ist nur bedingt dokumentiert und ich habe mir zuweilen schon
mehrfach die Haare bei der Suche nach den passenden Struct's gerauft.
Deshalb arbeite ich lieber mit der
Starbasic-API.
a) diese ist sehr gut dokumentiert, aber man muss sie erst verstehen lernen.
b) jede Menge Code-Beispiele im Netz.
ABER, es ist nicht einfach die Materie der objektorientierten Starbasic-Programmierung zu verstehen.
-------------------------------------------
Setze einmalig manuell einen Passwortschutz für eine Tabelle und
stelle die Optionen ein, welche erlaubt und gesperrt sein sollen.
Dieses Makro prüft den Status des Tabellenblattes:
a) ist es geschützt, dann wird der Schutz automatisch aufgehoben (Passwort im Code anpassen!)
b) ist es ungeschützt, dann wird der Passwortschutzt gesetzt.
Code: Alles auswählen
REM ***** BASIC *****
Option Explicit
REM ════════════════════════════════════════════════════════════════════════════════════════════════════
REM CALC:
REM 1) [Tabellen Schutz an aus]
REM ════════════════════════════════════════════════════════════════════════════════════════════════════
REM 1)
REM ---------------------------------------------------------------------
REM Makro prueft ob ein Tabellenschutz vorhanden ist,
REM WENN = JA, dann wird der Schutz aufgehoben
REM
REM WENN kein Tabellenschutz vorhanden ist, wird der Schutz gesetzt.
REM
REM WENN Passwoerter im Makro angegeben sind, DANN
REM MUESSEN in beiden CASE-Anweisungen
REM die gleichen Passwoerter angegeben werden!!!
REM ---------------------------------------------------------------------
Sub [Tabellen Schutz an aus]
Dim oDoc as Object
Dim oCC as Object
Dim oSheet as Object
oDoc=ThisComponent
oCC=oDoc.CurrentController
oSheet=oCC.ActiveSheet
select Case oSheet.isprotected
case "True"
'Schutz mit Passwort entfernen:
oSheet.Unprotect( "123" )
case "False"
'Schutz mit Passwort setzen:
oSheet.Protect( "123" )
End Select
End Sub