[gelöst] Kennwort temporär aufheben

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

Moderator: Moderatoren

mumpel
****
Beiträge: 133
Registriert: So, 22.08.2004 05:27
Wohnort: Lindau (B)
Kontaktdaten:

[gelöst] Kennwort temporär aufheben

Beitrag von mumpel »

Hallo!

Wie kann man ein Kennwort temporär aufheben, dann eine Formel in Zelle schreiben (hier in E8) und Tabelle wieder schützen?
In etwa so:

Code: Alles auswählen

Sub Kennwort
Rem Kennwortschutz aufheben?
Rem Eintrag in Zelle. folgende Zeile funktioniert nicht
ThisComponent.Sheets(0).GetCellRangeByName("E8").Value = "=DATUM(A2,2,1)"
Rem Hier werden Zeilen ein- und ausgeblendet
ThisComponent.Sheets(0).GetCellRangeByName("A12:A73").getRows.IsVisible = True
ThisComponent.Sheets(0).GetCellRangeByName("A74:A743").getRows.IsVisible = False
Rem Kennwort setzen?
End Sub
Danke!

Gruß, René
Zuletzt geändert von mumpel am Do, 31.07.2008 20:20, insgesamt 1-mal geändert.

Windows 7 Home Premium (auf Acer Desktop PC)
Windows 8 Professional (auf Microsoft Surface Pro 3).
MSO 365 Home Premium
LibreOffice 4.2.
F-Secure Internet Security
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Kennwort temporär aufheben

Beitrag von komma4 »

siehe die Routinen von Bibliothek: Tools, Modul: Misc

ProtectSheets und UnprotectSheets

die nutze ich bei Bedarf.


Es gibt also, eine Methode, die auf ein sheet angewendet werden kann, Beispiel:

Code: Alles auswählen

' toggle protection
' if password was used on protect
' it should not result in any error, but doesn't work
If oSheet.isProtected Then
	oSheet.Unprotect( "" )
Else
	oSheet.Protect( "" )
End If
aus: calc_toggleProt v 20051124


Bei Dir also ThisComponent.Sheets(0)

Hilft das weiter?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
mumpel
****
Beiträge: 133
Registriert: So, 22.08.2004 05:27
Wohnort: Lindau (B)
Kontaktdaten:

Re: Kennwort temporär aufheben

Beitrag von mumpel »

Danke, das funktioniert schon mal. Allerdings habe ich festgestellt, dass sich Zeilen und Spalten trotz Blattschutz über Makro ein- und ausblenden lassen. Das ist aber nicht gewünscht. Ist das normal und lässt sich das ändern? Oder ist das nur ein Bug in OOo 3.0 Beta? Zeilen und Spalten sollen wie in Excel nur bei ungeschützter Tabelle ein- und ausblendbar sein. Sonst hätte der Blattschutz ja gar keinen Sinn.

Windows 7 Home Premium (auf Acer Desktop PC)
Windows 8 Professional (auf Microsoft Surface Pro 3).
MSO 365 Home Premium
LibreOffice 4.2.
F-Secure Internet Security
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Kennwort temporär aufheben

Beitrag von turtle47 »

Ich frage mich die ganze Zeit, wer geht so ein Projekt in einer Beta-Version an? :o
mumpel hat geschrieben:dass sich Zeilen und Spalten trotz Blattschutz über Makro ein- und ausblenden lassen.
[
In 2.4.0 keine Probleme damit. :lol:
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
mumpel
****
Beiträge: 133
Registriert: So, 22.08.2004 05:27
Wohnort: Lindau (B)
Kontaktdaten:

Re: Kennwort temporär aufheben

Beitrag von mumpel »

Also vermute ich richtig(?). Ist eben eine Beta.

Windows 7 Home Premium (auf Acer Desktop PC)
Windows 8 Professional (auf Microsoft Surface Pro 3).
MSO 365 Home Premium
LibreOffice 4.2.
F-Secure Internet Security
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Kennwort temporär aufheben

Beitrag von turtle47 »

Sorry, muss mich korrigieren.
Den Test hatte ich mit einer manuellen Selektion und Dispatchercode durchgeführt.
Mit "richtigem" Code zum Ausblenden nutzt der Tabellenschutz nichts. :(
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Kennwort temporär aufheben

Beitrag von Stephan »

Code: Alles auswählen

Rem Eintrag in Zelle. folgende Zeile funktioniert nicht
ThisComponent.Sheets(0).GetCellRangeByName("E8").Value = "=DATUM(A2,2,1)"
Weil mit .Value nur numerische Werte übergeben werden. Für DEinen Fall brauchst Du ein .FormulaLocal oder besser ein .Formula das aber mit internationaler Funktionsbezeichnung, also:

Code: Alles auswählen

ThisComponent.Sheets(0).GetCellRangeByName("E8").Formula = "=DATE(A2,2,1)" 
Ist das normal und lässt sich das ändern?
Das ist normal, wobei es mit dispatchercode nicht gehen sollte, mit nativem aber schon.
Zeilen und Spalten sollen wie in Excel nur bei ungeschützter Tabelle ein- und ausblendbar sein. Sonst hätte der Blattschutz ja gar keinen Sinn.
Das Konzept von OOo ist da anders, diese Art des Schutzes ist bewußt nur ein Schutz gegen Fehlbedienung.



Gruß
Stephan
mumpel
****
Beiträge: 133
Registriert: So, 22.08.2004 05:27
Wohnort: Lindau (B)
Kontaktdaten:

Re: Kennwort temporär aufheben

Beitrag von mumpel »

Habe soeben mitbekommen, dass die Funktion bei jedem Öffnen der Datei ausgeführt wird. Das soll natürlich nicht passieren. Gibt es noch eine andere Möglichkeit, ein Makro nach Zelländerung auszuführen, also ein Starbasic-Pentant zu Excels Worksheet_Change?

@Stephan

Danke, mit Formula geht es. Was den Schutz angeht, da muss der Anwender eben selber aufpassen, dass er nichts ändert.

Windows 7 Home Premium (auf Acer Desktop PC)
Windows 8 Professional (auf Microsoft Surface Pro 3).
MSO 365 Home Premium
LibreOffice 4.2.
F-Secure Internet Security
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Kennwort temporär aufheben

Beitrag von Stephan »

Habe soeben mitbekommen, dass die Funktion bei jedem Öffnen der Datei ausgeführt wird.
Das solltest Du erklären.

Du must den Listener registrieren und erst dann erfolgt die Überwachung, sonst erfolgt nichts also auch kein automatisches Ausführen irgendeiner Funktion.
Hier gerne nochmals meine Variation zum Thema:

Für das konkrete Ereignis mußt Du zunächst einen solchen Listener registrieren (z.B. mitttels Autostartmakro beim Öffnen der Datei).

Folgender Code ist ein Beispiel, starte Sub addlistener um die Überwachung der Zellen des Blattes mit Index 0 zu starten und entferne den Listener beim Schliessen der DAtei mit Sub Remove_Listener. Dein auszuführender Code gehört in Sub MyApp_Modified(oEvent)

Code: Alles auswählen

Global oListener As Object
Global ocell as object

Sub Remove_Listener
On Error Resume Next
ocell.removemodifyListener(oListener)
End Sub

Sub addlistener
ocell=thiscomponent.sheets(0)
oListener = CreateUnoListener( "MyApp_", "com.sun.star.util.XModifyListener" )
ocell.addmodifylistener(olistener)
End Sub

Sub MyApp_Modified(oEvent)
'hier den Code den Du ausführen willst

End Sub
Im Speziellen ist es eleganter ddeen Listener nur für die eine von Dir gewünschte Zelle zu registrieren:

Code: Alles auswählen

Sub addlistener
ocell=thiscomponent.sheets(0).getcellrangebyname("F4")
oListener = CreateUnoListener( "MyApp_", "com.sun.star.util.XModifyListener" )
ocell.addmodifylistener(olistener)
End Sub


Gruß
Stephan
mumpel
****
Beiträge: 133
Registriert: So, 22.08.2004 05:27
Wohnort: Lindau (B)
Kontaktdaten:

Re: Kennwort temporär aufheben

Beitrag von mumpel »

Stephan hat geschrieben:Das solltest Du erklären.
Hoppla, da habe ich eine Antwort in den falschen Beitrag gesetzt. Diese Antwort war für diesen Beitrag bestimmt: Makro ausführen nach Zelleingabe

Der Listener funtkioniert nach einigen Startschwierigkeiten problemlos. Danke dafür!

Windows 7 Home Premium (auf Acer Desktop PC)
Windows 8 Professional (auf Microsoft Surface Pro 3).
MSO 365 Home Premium
LibreOffice 4.2.
F-Secure Internet Security
Antworten