Tabellenblätter Userabhängig ausblenden

Bild

Betrifft: Tabellenblätter Userabhängig ausblenden
von: Helmut
Geschrieben am: 26.07.2015 15:54:32

Hallo liebes Forum
Sitze schon wieder mal einige Stunden vorm PC und komm nicht weiter.
Ich möchte das wenn der "Huber" und der "Maier" die Excel Tabelle öffnen, nur Tabellenblatt1,2 +3 sehen.(Insgesamt hat die Mappe sagen wir mal 10 TB). Hingegen wenn jemand anderer die Mappe öffnet, sollen alle 10 TB sichtbar sein. Ist dies mit einen Makro möglich? Ich sage jetzt schon mal herzlichen Dank für eure Mithilfe.
LG Helmut

Bild

Betrifft: AW: Tabellenblätter Userabhängig ausblenden
von: Daniel
Geschrieben am: 26.07.2015 16:42:56
Hi
du hast zwei möglichkeiten zu ermitteln, wer gerade am Rechner sitzt:
mit Environ("Username") bekommst du die UserID, mit der sicher Anwender in Windows angemeldet hat.
mit Application.Username bekommst du die Bezeichung, die der Anwender selbst in den Optionen als Benutzername eingegeben hat.
je nachdem welche Daten dir vorliegen, kannst du dann im Workbook-Open-Event folgenden Code hinterlegen:

Select Case Application.Username
    Case "Huber", "Maier"
         Tabelle1.Visible = xlsheetvisible
         Tabelle2.Visible = xlsheetveryhidden
         Tabelle3.Visible = xlsheetvisible
         usw für alle Tabellenblätter
    Case Else
         Tabelle1.visible = xlsheetvisible
         Tabelle2.visible = xlsheetvisible
         usw für alle Tabellenblätter
End Select
allerdings greift das nur, wenn die Makros aktiviert sind.
bei deaktivierten Makros können auch Huber und Maier alles sehen.
wenn du das sicher stellen willst, wirds etwas komplizierter, du musst:
- im BeforeSave-Event alle Blätter ausblenden bis auf ein für alle zugängliches Deckblatt
- im AfterSave-Event wieder die Blätter einblenden, entsprechend des Userser, damit dieser nach dem Speichern wieder normal arbeiten kann
- im WorkbookOpen-Event dann wie gezeigt die Blätter einblenden.
wenn dann jemand die Datei ohne Makros öffnet, bekommt er nur das eine Deckblatt zu sehen.
Gruss Daniel

Bild

Betrifft: AW: Tabellenblätter Userabhängig ausblenden
von: Helmut
Geschrieben am: 26.07.2015 20:47:09
Hallo Daniel
Danke für deine rasche Hilfe, doch leider bekomme ich eine Fehlermeldung: Fehler beim Komplieren: Sub,Function oder Proberty erwartet!
Natürlich haben meine Tabellenblätter Namen und nicht TB 1 usw. Diese Namen habe ich natürlich auch im Code angepasst, auch den User, aber......Fehlermeldung.
Noch was: Wieso ist einmal Tabelle1.Visible = xlsheetvisible und dann Tabelle2.Visible = xlsheetveryhidden ??????
Hajo ich weis das in Excel nicht sicher ist, aber die Leute die bei mir damit arbeiten, wissen nicht sehr viel über Excel und geben auch nur Daten ein. Trotzdem danke.
LG Helmut

Bild

Betrifft: AW: Tabellenblätter Userabhängig ausblenden
von: Daniel
Geschrieben am: 26.07.2015 22:00:55
Hi
ich kann weder hellsehen, noch mich auf deinem Rechner einhacken, dh du musst mir schon deinen Code zeigen, damit ich dir sagen kann, was du falsch gemacht hast.
zu deiner zweiten Frage:
ein Excelblatt kann bezüglich seiner sichtbarkeit 3 Zustände annehmen:
a) für den Andwender sichbar
b) ausgeblendet, aber der Anwendern bekommt das Blatt in der entsprechenden Menüfunkton angezeigt und kan es bei bedarf selber wieder einblenden
c) komplett ausgeblendet, dh auch in dieser Menüfunktion wird das Blatt nicht angezeigt und es kann nur über VBA wieder sichtbar gemacht werden.
a) ist xlsheetVisible
b) ist xlsheethidden
c) ist xlsheetveryhidden
du musst halb bleim Dateistart die Blätter xlsheetvisible setzen, die der Anwender sehen darf und die er nicht sehen darf auf xlsheetveryhidden.
Gruss Daniel

Bild

Betrifft: AW: Tabellenblätter Userabhängig ausblenden
von: Helmut
Geschrieben am: 26.07.2015 22:16:55
Guten Abend Daniel
Sorry hatte den Code zum einfügen vergessen, hier ist er

Private Sub Workbook_Open()
 
 Select Case Application.UserName
    Case "helmu_001"
         Heinl W.Visible = xlSheetVisible
         Kinzel.Visible = xlSheetVeryHidden
         Kitzberger.Visible = xlSheetVisible
        ' usw für alle Tabellenblätter
    Case Else
          Heinl W.Visible = xlSheetVisible
          Kinzel.Visible = xlSheetVisible
          Kitzberger.Visible = xlSheetVisible
        'usw für alle Tabellenblätter
End Select
End Sub

Also "helmu_001" ist der Benutzer den Excel von mir verwendet.
Besten Dank im voraus Helmut

Bild

Betrifft: AW: Tabellenblätter Userabhängig ausblenden
von: Daniel
Geschrieben am: 26.07.2015 22:37:42
HI
jedes Tabellenblatt hat zwei Namen:
a) den Codenamen, dieser steht im Projektexplorerbaum als erstest vor der Klammer
b) den Indexnamen, dieser steht im Projektexplorerbaum als zweites in der Klammer. Dieser Name wird auch auf den Tabellenblattreitern angezeigt.
wenn du den Codenamen verwendest, um das Blatt anzusprechen, dann so:

Tabelle1.Visible = xlsheetvisible

wenn du den Indexnamen (dh den Namen, der auf den Reitern steht) verwenden willst, dann:
Worksheets("Tabelle1").Visible = xlsheetvisible
Gruss Daniel

Bild

Betrifft: AW: Tabellenblätter Userabhängig ausblenden
von: Helmut
Geschrieben am: 27.07.2015 16:59:58
Hallo Daniel
Entweder habe ich ein Brett vorm Kopf oder was. Hier nachstehend nochmals der Code, doch der tut nichts!!!Ich verzweifle.

Private Sub Workbook_Open()
 
 Select Case Environ("helmu_001")
    Case "helmu_001"
         Tabelle13.Visible = xlSheetVeryHidden
         Tabelle14.Visible = xlSheetVeryHidden
         Tabelle15.Visible = xlSheetVeryHidden
        ' usw für alle Tabellenblätter
    Case Else
         Tabelle13.Visible = xlSheetVisible
         Tabelle14.Visible = xlSheetVisible
         Tabelle15.Visible = xlSheetVisible
        'usw für alle Tabellenblätter
End Select
End Sub
Danke nochmals im voraus LG Helmut

Bild

Betrifft: AW: Tabellenblätter Userabhängig ausblenden
von: Daniel
Geschrieben am: 27.07.2015 17:05:40
Hi
select Case Environ("UserName")
das "Username" muss dort als Text genao so stehen bleiben.
Die Funktion ENVIRON kann dir meherer unterschiedliche Systeminformationen zurückgeben, dh du musst der Funktion noch mitteilen, welche Information du haben willst.
Gruß Daniel

Bild

Betrifft: AW: Tabellenblätter Userabhängig ausblenden
von: Daniel
Geschrieben am: 27.07.2015 17:10:20
Hi
select Case Environ("UserName")
das "Username" muss dort als Text genao so stehen bleiben.
Die Funktion ENVIRON kann dir meherer unterschiedliche Systeminformationen zurückgeben, dh du musst der Funktion noch mitteilen, welche Information du haben willst.
Gruß Daniel

Bild

Betrifft: AW: Tabellenblätter Userabhängig ausblenden DANKE
von: Helmut
Geschrieben am: 27.07.2015 20:17:25
Hallo Daniel
Juhu es funktioniert!!!!!!DANKE!!!! Mein Chef sagt immer: "Ist sicher nur ein Anwendungsfehler". Wie recht er doch hat. Danke nochmal an dich und an das ganze Forum. Was würden wir ohne euch machen. danke danke danke
Herbers Excel Forum "da wird dir geholfen"
LG Helmut

Bild

Betrifft: AW: Tabellenblätter Userabhängig ausblenden
von: Hajo_Zi
Geschrieben am: 26.07.2015 17:06:20
Hallo Helmut,
in Excel ist nichts sicher.
"Maier" öffnet die Datei ohne Makros und er sieht alles.


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Tabellenblätter Userabhängig ausblenden"