Wie kann man in Excel eine bestimmte Spalte für bestimmte Benutzer ausblenden, ohne dass diese wieder eingeblendet werden kann?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Außer bei den ausgeblendeten Zellen wende an:

rechte Maustaste → Zellen formatieren → Schutz
Haken bei Gesperrt herausnehmen.

Dann setze einen Blattschutz (oder Arbeitsmappenschutz)
Überprüfen → Blatt schützen

Nur User, die das Passwort kennen, können die Spalten einblenden.


PWolff  22.07.2015, 12:41

Das Ausführen von Makros lässt sich nicht erzwingen - das wäre eine erhebliche Sicherheitslücke.

(Es sei denn, es gibt spezielle Einstellungen für signierte Makros aus Quellen, die als vertrauenswürdig bezeichnet wurden, das kenne ich aber nicht.)

Von daher geht das Gewünschte wohl am ehesten, indem die ausgeblendeten Spalten in verschlüsselter Form vorliegen und durch ein Makro erst in der brauchbaren Form gefüllt werden.

0
Suboptimierer  22.07.2015, 12:59
@PWolff

Wenn Makros nicht aktiviert werden, müsste das Sheet standardmäßig sich mit ausgeblendeten Spalten öffnen.

Beim Öffnen mit aktiven Makros müssten die Spalten benutzerabhängig eingeblendet und das Blatt freigegeben werden. Beim Schließen müssten sie ausgeblendet werden und das Blatt geschützt werden.

Das sollte machbar sein. Wie gesagt müsste zusätzlich auf das VBA-Projekt ein Passwortschutz gelegt werden.

0
Hafenhilde 
Beitragsersteller
 22.07.2015, 12:34

Huch, da warst du schneller.

Ich danke dir vielmals für deine Mühe und werde mal testen, ob ich das mit meinem Laienwissen umgesetzt bekomme... ;)

Vielen, vielen Dank jedenfalls!!! :)

1
Hafenhilde 
Beitragsersteller
 22.07.2015, 12:33

Toll wäre es, wenn es möglich ist, dass die Tabelle sich so öffnet, wie der jeweilige User sie sehen soll.

Zum Beispiel: User A darf die Spalte sehen und diese ist beim Öffnen der Datei bereits eingeblendet.

Wenn hingegen User B die Tabelle öffnet, sieht er die Spalte nicht und hat auch keine Möglichkeit diese einzublenden.

Das alles, wenn möglich, ohne eine Blattschutz einzurichten, weil mir einfach die Gefahr zu hoch ist, dass die Datei ohne Blattschutz gespeichert wird und alle die sensiblen Daten sehen können...

Ich habe bisher nur einen VBA Code gefunden mit dem ich steuern kann, welche User die Spalte nicht sehen können. Allerdings gibt es immer noch die Möglichkeit die Spalte über Rechtsklick wieder einzublenden.

0
Suboptimierer  22.07.2015, 12:51
@Hafenhilde

Das Ereignis für das Öffnen heißt Workbook_Open().

Wie du den User abfragen kannst, habe ich oben beschrieben.

Die Sorge um den Blattschutz kann ich dir nehmen, denn dieser lässt sich, auch wie oben beschrieben, automatisch setzen.

Das Ein- und Ausblenden würde ich automatisieren. Als User übersieht man leicht, dass Spalten ausgeblendet sind.


Einzig habe ich keine Lösung für dich, wie du vermeiden kannst, dass Inhalte der versteckten Spalte von Berechtigten Usern transportiert werden. Das Auswählen von Zellen kannst du verhindern, aber man könnte z. B. einen Screenshot davon anfertigen.

Die berechtigten User müssen in die Pflicht genommen werden, mit den Daten sorgfältig umzugehen.

0
Hafenhilde 
Beitragsersteller
 22.07.2015, 12:13

Vielen Dank für deine Antwort.

Wenn allerdings jemand den Blattschutz vor dem Speichern nicht wieder aktiviert, ist das Einblenden der Spalte auch wieder möglich. :(

0
Suboptimierer  22.07.2015, 12:14
@Hafenhilde

Klar, wenn jemand das Recht hat, die Spalte einzublenden, kann er die Arbeitsmappe in diesem Zustand wieder abspeichern.

Wie würdest du dir das denn optimalerweise vorstellen?

0
Suboptimierer  22.07.2015, 12:18
@Hafenhilde

Um das alles zum Beispiel programmgesteuert beim Schließen oder Speichern auszuführen, würde ich mir das mit dem Zellschutz und Blattschutz einmal als Makro aufzeichnen lassen.

Auch das VBA-Projekt kann man mit einem Kennwort schützen.

1
Suboptimierer  22.07.2015, 12:30
@Suboptimierer

Ich habe mal etwas herum gespielt. Da du dir aber nicht sicher sein kannst, was berechtigte User mit den ausgeblendeten Spalten machen, ist dein Einfluss auf deren Aktionen entsprechend gering.

Den Windows-Usernamen bekommst du mit

Windows.Application.UserName

Ihn kannst du zur Unterscheidung als Abfrage einbauen, ob berechtigt oder nicht. Für ihn solltest du beim Öffnen evtl. die Spalten automatisch einblenden.

Hier die Schließenprozedur:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Columns("G:G").Select ' könnte allerdings verschoben worden sein! Selection.Locked = True Selection.FormulaHidden = False Selection.EntireColumn.Hidden = True ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="xxx" ActiveWorkbook.Save End Sub
0

Hat sich das Thema jetzt eigentlich erledigt?

Falls nicht wäre ja noch die Möglichkeit einer Dummytabelle welche erstmal darauf hinweist das Makros deaktiviert sind.

Wenn das nicht der Fall geht, ist gleich ein Tabellenblatt sichtbar welches ein Login Button (oder Feld) hat wo man sich anmelden muß, da kann man ja dann hinterlegen wer was sehen kann.


Hafenhilde 
Beitragsersteller
 23.07.2015, 07:14

Hallo schmiddi1967,

das Thema ist noch nicht so ganz erledigt... ;)

Ich bastel also immer noch.

Die Geschichte mit dem Login gefällt mir ganz gut. Aber ich habe überhaupt keine Ahnung wie ich da ran gehen muss... 

0
schmiddi1967  23.07.2015, 07:43
@Hafenhilde

Hast du die Möglichkeit mir dein gebastelstes zukommen zu lassen, dass ist dann einfacher das ganze einzubauen. So weiss ich ja nicht was bei dir wo hinterlegt oder drin steht und du hast in einer Antwort ja auch schon geschrieben das du einen Code hast, der würde mich auch Interessieren.

Du kannst mir das gerne an schmiddi.gf@gmail.com senden, falls du das nicht willst kann ich dir nur eine Datei fertig machen wenn ich genau weiß was wo bei dir steht und was wie wo genau aus oder eingeblendet sein soll.

0
schmiddi1967  28.07.2015, 23:28
@Hafenhilde

Wie ist die Lage, brauchst du da jetzt noch hilfe oder ist das Thema erledigt?

0

Als Lösung fällt mir folgendes ein:

Bei jedem Mausklick soll ein Prüfereignis aufgerufen werden: es soll geprüft werden, ob der Name des Benutzers in einer hinterlegten Liste vorhanden ist. Wenn nicht, soll die Spalte ausgeblendet werden.