Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zugriff steuern
#1
Hallo zusammen,

ich habe folgenden Code:

Code:
Option Explicit
Dim arrSh, i#

Private Sub Workbook_Open()
arrSh = Split("Tabelle1 Tabelle2 Tabelle3 Tabelle4 Tabelle5 Tabelle6")
If Environ("UserName") <> "maxmuster" Then Exit Sub
For i = 0 To UBound(arrSh)
   Sheets(arrSh(i)).Visible = True

Next
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
For i = 0 To UBound(arrSh)
   Sheets(arrSh(i)).Visible = xlVeryHidden
Next
ThisWorkbook.Save
End Sub

Was passieren soll:
Es soll beim Schließen der Excel alles ausgeblendet werden (Tabelle1 Tabelle2 Tabelle3), außer "Info"...
In dem Tabellenblatt Info steht --> das die Makros aktiviert werden müssen, um weitere Tabellenblätter zu sehen.

Dann soll im o.g. abgebildet werden, welche User, welche Tabellenblätter sehen.

Im o.g. Beispiel sieht der User maxmuster Tabelle1, Tabelle2.... bis Tabelle6

thommuel soll nun beispielsweise nur Tabelle1 und Tabelle2 sehen.
markmaie soll beispielsweise nur Tabelle 4 sehen
usw usw usw.

Wie kann ich das umsetzen?
Antworten Top
#2
Hi,

(17.03.2017, 11:52)Blitzkönig schrieb: Wie kann ich das umsetzen?

so?
[...]
auf Nachfrage mit Ergänzung und Erläuterung zum Verständnis der Cases.
Der Schreibschutz/Blattschutz wird ohne Passwort verwendet. Wenn Passwörter verwendet werden sollen, muß das ' vor dem Password weg, das Passwort ist dann test:
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
   Dim i As Integer
   With ThisWorkbook
      For i = 1 To Sheets.Count
         .Sheets(i).Visible = False          'alle Blätter werden ausgeblendet 
         .Sheets(i).Protect 'Password:="test" 'alle Blätter werden schreibgeschützt ohne Passwort, sonst das ' entfernen 
      Next i
      .Sheets("Info").Visible = True
   End With
End Sub

Private Sub Workbook_Open()
   Dim s As String
   Dim i As Integer
   
   s = VBA.Environ("Username")
   
   With ThisWorkbook
      Select Case s                     'Tabellen, Bereiche und Formularschaltflächen ausblenden, je nach Account 
      Case Is = "maxmuster", "michamuster": ', "klaus": 
         'Wenn der User maxmuster oder michamuster ist, dann zeige alle Blätter an und entschütze sie 
         For i = 1 To Sheets.Count
            .Sheets(i).Visible = True              'alle Blätter werden eingeblendet 
            .Sheets(i).Unprotect 'Password:="test" 'alle Blätter werden entschützt ohne Passwort, sonst das ' entfernen 
         Next i
      Case Is = "thommuel": ', "huber", "schmid": 
         'Wenn der User thommuel ist, dann verberge alle Blätter und schütze sie, anschließend zeige nur Blatt eins und zwei an. 
         For i = 1 To Sheets.Count
            .Sheets(i).Visible = False           'alle Blätter werden ausgeblendet 
            .Sheets(i).Protect 'Password:="test" 'alle Bläütter werden schreibgeschützt ohne Passwort, sonst das ' entfernen 
         Next i
         For i = 1 To 2
            .Sheets(i).Visible = True            'Blatt 1 und 2 werden eingeblendet 
         Next i
      Case Is = "markmaie":
         'Wenn der User markmaie ist, dann verberge alle Blätter und schütze sie, anschließend zeige nur Blatt vier an. 
         For i = 1 To Sheets.Count
            .Sheets(i).Visible = False           'alle Blätter werden ausgeblendet 
            .Sheets(i).Protect 'Password:="test" 'alle Bläütter werden schreibgeschützt ohne Passwort, sonst das ' entfernen 
         Next i
         .Sheets(4).Visible = True               'Blatt 4 wird eingeblendet 
      Case Else
         'alle anderen Benutzer sehen die komplette Datei, aber nur schreibgeschützt (ReadOnly = True) 
         'Datei schreibgeschützt öffnen 
         'Ausdruck.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad) 
         Application.DisplayAlerts = False
         Workbooks.Open ThisWorkbook.FullName, , True
      End Select
   End With
   Application.DisplayAlerts = True
   
End Sub
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste