BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das OpenOffice Forum zu erhalten!

DANKE >><< DANKE

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des OpenOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 🤗

(gelöst) Problem : Tabelle schützen (Aoo Calc Oberfläche und per Makro)

Alles zur Programmierung im OpenOffice.org
Antworten
Nosferan
Beiträge: 4
Registriert: Sa 6. Mai 2023, 12:01

(gelöst) Problem : Tabelle schützen (Aoo Calc Oberfläche und per Makro)

Beitrag von Nosferan » Sa 6. Mai 2023, 13:20

hallo zusammen,

wenn ich ein tabellenblatt schützen will, wähle ich -->extras ,--> dokument schützen, --> tabelle. im erscheinenden dialog lösche ich das häkchen --> gesperrte zellen wählen.
Somit kann ich wirklich nur freie Zellen anwählen und sehe auch keine Formeln in den gesperrten zellen.

Das ich genau das, was ich möchte.

Nun die zwei Probleme :
1. Die einstellung bleibt nur in der aktiven Sitzung. Beim erneuten öffnen der datei ist das häkchen wieder gesetzt und die gesperrten zellen sind anwählbar und die formeln sichtbar.

2. wenn makros gesperrte zellen ändern sollen, muss ich per macro den blattschutz aufheben und wieder setzen.
zum beispiel : thisComponent.Sheets.getByName(oblattname).protect("")
ich habe weder hier , bei dannehöfer oder piontak gefunden, wie ich diesen haken (gesperrte zellen wählen) per makro ändern kann.
gefunden hab ich lediglich sowas :
'thisComponent.Sheets.getByName("xxxxxx").Protect("UserInterfaceOnly:=True, DrawingObjects:=True, Contents:=True, Scenarios:=True")
das funktioniert aber auch mit probieren (klammern, kommas oder " ") nicht . die zeile produziert, wie auch immer, nur fehlermeldungen.

kann mir hier vlt. jemand weiterhelfen ?
Zuletzt geändert von Nosferan am Mo 15. Mai 2023, 18:39, insgesamt 1-mal geändert.
Gruss
Nosferan

Mondblatt24
Beiträge: 812
Registriert: Do 9. Mär 2017, 09:53

Re: tabelle schützen (calc oberfläche und macro)

Beitrag von Mondblatt24 » Sa 6. Mai 2023, 15:23

Nosferan hat geschrieben:
Sa 6. Mai 2023, 13:20
Die einstellung bleibt nur in der aktiven Sitzung. Beim erneuten öffnen der datei ist das häkchen wieder gesetzt und die gesperrten zellen sind anwählbar und die formeln sichtbar.
Nicht bei LibreOffice.
Win 11 (x64) ▪ 24.2.2.2 (x64) ▪ AOO Portable 4.1.15
Wenn Eure Frage zutreffend beantwortet wurde, seid so nett und fügt dem Betreff der Eingangsfrage [GELÖST] hinzu.

mikele
Beiträge: 771
Registriert: Sa 23. Jul 2011, 22:09

Re: tabelle schützen (calc oberfläche und macro)

Beitrag von mikele » Sa 6. Mai 2023, 17:54

Hallo,
.protect() hat als Argument "nur" das Passwort. Ein spezifischer Schutz (z. B. gesperrte zellen wählen oder nicht) ist leider nicht möglich (würde ich mir aber auch wünschen).
Gruß,
mikele

mikele
Beiträge: 771
Registriert: Sa 23. Jul 2011, 22:09

Re: tabelle schützen (calc oberfläche und macro)

Beitrag von mikele » So 7. Mai 2023, 11:19

Hallo,
deien Schreibweise hat moch auf die Idee gebracht, dass es vielleicht per VBA-Support klappen könnte und verrückterweise geht es:

Code: Alles auswählen

Option VBASupport 1
Sub schutz
    Worksheets("Tabelle1").activate
    ActiveSheet.EnableSelection = xlUnlockedCells
    ActiveSheet.Protect Password:="test"
End Sub
Ich habe noch kein Pendant zu .EnableSelection in der LibreOffice-API gefunden.
Gruß,
mikele

Nosferan
Beiträge: 4
Registriert: Sa 6. Mai 2023, 12:01

Re: tabelle schützen (calc oberfläche und macro)

Beitrag von Nosferan » So 7. Mai 2023, 16:52

Mondblatt24 hat geschrieben:
Sa 6. Mai 2023, 15:23
Nosferan hat geschrieben:
Sa 6. Mai 2023, 13:20
Die einstellung bleibt nur in der aktiven Sitzung. Beim erneuten öffnen der datei ist das häkchen wieder gesetzt und die gesperrten zellen sind anwählbar und die formeln sichtbar.
Nicht bei LibreOffice.
hallo Mondblatt,

und was genau soll mir da jetzt weiterhelfen ?

Gruss
Nosferan
Gruss
Nosferan

Nosferan
Beiträge: 4
Registriert: Sa 6. Mai 2023, 12:01

Re: tabelle schützen (calc oberfläche und macro)

Beitrag von Nosferan » So 7. Mai 2023, 17:09

hallo mikele,

vielen Dank für deine Antwort, Damit kann man schon mal was anfangen.
Mit copy/past ist der Code, wie meist üblich, bei mir leider nicht lauffähig.

Option VBASupport 1 löst bei mir in diversen Makros plötzlich Fehlermeldungen aus.
Auch kenne ich mich mit dem Kapitel VBA nicht aus und muss mich da erst schlau machen.
Ich werde versuchen, den Code zum Laufen zu bringen und melde mich dann wieder.

Gruss
Nosferan
Gruss
Nosferan

Mondblatt24
Beiträge: 812
Registriert: Do 9. Mär 2017, 09:53

Re: tabelle schützen (calc oberfläche und macro)

Beitrag von Mondblatt24 » Mo 8. Mai 2023, 15:30

Hallo,
Nosferan hat geschrieben:
So 7. Mai 2023, 16:52
und was genau soll mir da jetzt weiterhelfen ?
Wollte es nur mal erwähnt haben, weil es sich bei OpenOffice vermutlich nicht mehr ändern wird.

Gruß
Peter
Win 11 (x64) ▪ 24.2.2.2 (x64) ▪ AOO Portable 4.1.15
Wenn Eure Frage zutreffend beantwortet wurde, seid so nett und fügt dem Betreff der Eingangsfrage [GELÖST] hinzu.

Nosferan
Beiträge: 4
Registriert: Sa 6. Mai 2023, 12:01

Re: tabelle schützen (calc oberfläche und macro)

Beitrag von Nosferan » Do 11. Mai 2023, 01:50

Hallo zusammen,

nach etlichem Probieren habe ich die Lösung gefunden. Ich fasse das Problem nochmal zusammen, da ich denke, dass auch andere User daran interessiert sind.

Problem Blattschutz in Aoo :
Da in Aoo dieser Blattschutz nicht gespeichert wird, muss bei jedem Start der Datei
der Schutz neu gesetzt werden. Realisieren kann man das per Autostart-Makro beim öffnen der Datei.
Ebenso natürlich, wenn ein Makro geschützte Zellen beschreiben will. --> Blatt freigeben, ...schreiben..., --> Blatt schützen.
---
Erreichbar ist der Blattschutz über --> Extras, --> Dokument schützen, --> Tabelle. Im erscheinenden Fenster befindet sich
das Auswahlfeld : --> gesperrte Zellen wählen. Hier muss das Häkchen dazu entfernt werden.
Und genau hier liegt das Problem : Aoo setzt bei jedem öffnen der Datei das Häkchen neu.
Besonders bitter : Dieser Befehl lässt sich über Aoo-Makros NICHT ansprechen.
---
Lösung :
Unter VBA ist der Befehl ansprechbar.
Mit -Option VBASupport 1- wird für und NUR FUER DIESE Seite der Interpreter von Aoo-Code auf VBA-Code umgestellt.
Auf dieser Seite funktioniert dann auch nur VBA-Code, den der Aoo-Interpreter auch implementiert hat.
Normale Aoo-Makros verursachen hier Fehlermeldungen unterschiedlichster Art.
Aus diesem Grund MUSS der VBA-Code auf einer eigenen Seite stehen .
---
Aufruf aus einem normalen Aoo-Makroblatt :

Code: Alles auswählen

option eplicit
dim oname
 '---
sub blatt_schutz
	oname ="acct"
	call bl_schutz(oname)		' befindet sich in blatt <VBAcode>
end sub
Das VBA-Makro auf einer eigenen Seite. Habe ich mal einfach VBAcode genannt :

Code: Alles auswählen

Option VBASupport 1		'ein=1, aus=0
'option explicit
'dim oname
'----------------------------------------------
Sub bl_schutz (oname as string)
	'schützt das spezifizierte Tabellenblatt. oname ist der übergebene Blattname	
	'print oname
	'---
	Worksheets(oname).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
	Worksheets(oname).EnableSelection = xlUnlockedCells
End Sub
Auskommentierte Zeilen waren zum Testen. Die Reihenfolge der zwei Zeilen in Sub bl_schutz muss stimmen, umgekehrt funktioniert es nicht.
Bei dieser Version des Aufrufes ist es egal, ob das Blatt das aktive Blatt oder irgendein Blatt ist. Das klappt auch mit Blättern im Hintergrund.

Bei mir funkioniert das so mit der Variablenübergabe einwandfrei, zuverlässig und blitzschnell.

Ganz herzlichen Dank an Mikele, der mir mit seinem Tipp den entscheidenden Anstoss gegeben hat.
Gruss
Nosferan

Antworten