Zellenschutz mit Passwortabfrage

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Zellenschutz mit Passwortabfrage

Re: Zellenschutz mit Passwortabfrage

von orso » Di, 16.10.2007 12:12

Hallo,

ach so, Entfernen ist also doch wichtig?!

Ob ich das überhaupt explizit mache? Ich kann gerade nicht schauen, glaube aber nicht.

Das werde ich mal bei nächster Gelegenheit prüfen und ggf. den Aufruf zum Entfernen mit einbinden.

Danke Dir.

Oliver

Re: Zellenschutz mit Passwortabfrage

von Toxitom » Mo, 15.10.2007 17:05

Hey orso,

poste mal deinen benutzen Code! Meine Erfahrungen mit dem Listener zeigten, dass dieser viel zu häufig registiert wird ohne wirklich entfernt zu werden. Das kann dann zu solchen "Effekten" kommen.
Mich interessiert, wie und wann du den Listener registrierst und wie und wann du ihn wieder entfernst.

Viele Grüße
Thomas

Re: Zellenschutz mit Passwortabfrage

von orso » Mo, 15.10.2007 10:33

Es funktioniert. Vielen Dank dafür.

Ich habe jedoch den Eindruck, dass der Listener sich manchmal "aufhängt". Es gibt sporadisch komische Reaktionen, die ich noch nicht so recht einordnen konnte.

Re: Zellenschutz mit Passwortabfrage

von orso » Mi, 26.09.2007 09:05

Hallo,

vielen Dank für die Antwort!

Ich werde heute mal ein wenig mit dem Code rumprobieren.

Danke

Oliver

Re: Zellenschutz mit Passwortabfrage

von komma4 » Sa, 22.09.2007 19:04

orso hat geschrieben:Gibt es ein Äquivalent unter Calc zu Excels Worksheet_SelectionChange?
com.sun.star.view.XSelectionChangeListener
Aus meiner Testkiste das folgende Beispiel; leider habe ich keine Quelle notiert, aber höchstwahrscheinlich aus dem engl. Forum

Code: Alles auswählen

' ========================================================================================================
 REM   Global Variables:
 
    Global oListener    As Object
    Global oDocView    As Object
 ' ========================================================================================================
 REM   Run this macro to start event intercepting:
 Sub Example_SelectionChangeListener
 
    oDocView = ThisComponent.getCurrentController
     
    'create a listener to intercept the selection change event
    oListener = CreateUnoListener( "MyApp_", "com.sun.star.view.XSelectionChangeListener" )
     
    ' register the listener to the document controller
    oDocView.addSelectionChangeListener(oListener)
     
 End Sub
 
 ' ========================================================================================================
 REM   Run this macro to stop event intercepting:
 Sub Remove_Listener
 
   ' removes the listener
   oDocView.removeSelectionChangeListener(oListener)
 
 End Sub
 
 ' ========================================================================================================
 REM   All listeners must support this event:
 Sub MyApp_disposing(oEvent)
 
   msgbox "disposing of the listener"
 
 End Sub
 
 ' ========================================================================================================
 REM   What to do when we get an event:
 Sub MyApp_selectionChanged(oEvent)
 
   Dim oCurrentSelection As Object
   ' the source property of the event struct
   ' gets a reference to the event source,
   ' in this case, NOT the onscreen selection,
   ' but rather the currentController:
 
    oCurrentSelection =  oEvent.source
    MsgBox "Fired:" & chr(10) & chr(10) & oCurrentSelection.dbg_properties
    
  '  if oCurrentSelection.showGrid() = TRUE  then
  '  	msgbox "scheinen"
  '  end if
 
'  	msgbox oCurrentSelection.ActiveSheet.Name
   ' This will give us info about the onscreen selection:
    dim oCurr as object
          oCurr = thiscomponent.getcurrentselection
    msgbox "Selection: " & oCurr.getimplementationname
 
 End Sub
Kommst Du damit zurecht?

Zellenschutz mit Passwortabfrage

von orso » Di, 18.09.2007 17:28

Hallo,

ich stelle momentan eine Excel-Anwendung auf Calc um und konnte dank dieses Forum schon so manches Problem lösen.

Ein Problem konnte ich bisher allerdings nicht lösen.

Der Sachverhalt:
Ein Tabellenblatt wird von 2 Arbeitsgruppen bearbeitet. Dabei hat Gruppe 1 Zugriff auf einen eingeschränkten Zellenbereich und Gruppe 2 Zugriff auf das gesamte Blatt. Beide Gruppen müssen alles lesen können.

Das Blatt wurde gesperrt und einzelne Zellen wurden freigegeben.

Da die Gruppen aus einer größeren Menge an Personen bestehen, sollte das manuelle Aufheben des Blattschutzes - und viel wichtiger - das anschließende erneute Einrichten des Schutzes automatisiert werden. Die Gefahr der Eingabe eines falschen Passwortes ist zu groß.

Es gibt daher nur ein Passwort für die geschützten Bereiche.

Unter Excel habe ich das Problem mittels

Worksheet_SelectionChange(ByVal Target As Excel.Range)

gelöst.

Es gab hier eine Konfigurationsseite, über die der zu schützende Bereich bestimmt wurde. Anschließend wurde geprüft, ob jemand den geschützten Bereich "betreten" möchte (obige Funktion). Wenn dies der Fall war, wurde ein PW-Dialog angezeigt. War die PW-Eingabe korrekt, konnte der Zellbereich bearbeitet werden. War das PW falsch, erfolgte der Sprung zu einer definierten Rücksprungadresse.

Auch für einzelne Shapes war eine Freischaltung notwendig.

Vor dem Speichern (Workbook_BeforeSave) der Anwendung wurde der Schutz komplett automatisch wieder hergestellt.

Das Problem:
Gibt es ein Äquivalent unter Calc zu Excels Worksheet_SelectionChange?
Oder wie kann man dieses Problem unter OO Calc lösen?

Vorab vielen Dank für Antworten.

Nach oben