Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1688to1692
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zugriffsrechte nach Anwender unterscheiden

Zugriffsrechte nach Anwender unterscheiden
02.05.2019 15:27:08
Wolfgang

Hallo liebe Excellenzen !
Mit dem nachfolgenden Code frage ich den Excel-Anwender ab, der eine Exceldatei zu öffnen versucht und erlaube oder verweigere den Zugriff auf die Datei.
Meine Frage : Kann dieser Code so geändert werden, daß die im Makro hinterlegten Anwender Schreibe- und Leseberechtigung haben, alle anderen Anwender aber nur die Leseberechtigung ohne Möglichkeit, etwas zu ändern ?
Private Sub Workbook_Open()
'Abfrage des Excel-Anwenders, der die Datei öffnet
'Wenn der Anwendername gleich/ungleich des hinterlegten Namens ist, soll ein Makro starten
Dim strUser As String
strUser = Application.UserName
If strUser = ("Meier, Fritz") Or strUser = ("Müller, Jonas") Then '  oder = verwenden
'Makro starten:
MsgBox "Willkommen"
Exit Sub
Else
'Falls Datei von einem anderen Anwender geöffnet wird :
MsgBox "Du kummst hier net rein !" & vbCrLf & "Die Datei wird geschlossen"
ThisWorkbook.Close
End If
End Sub
Für sachdienliche Hinweise, ob und wie sowas gehen könnte, bedanke ich mich im voraus.
Liebe Grüße
Wolfgang

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zugriffsrechte nach Anwender unterscheiden
02.05.2019 15:38:05
UweD
Hallo
du könntest vor Schließen der Datei in allen Blättern den Schreibschutz setzen;
und dann bei bestimmten Nutzern beim Open wieder rausnehmen.
LG UweD
AW: Zugriffsrechte nach Anwender unterscheiden
02.05.2019 15:48:47
Wolfgang
Hallo Uwe !
Vielen Dank für die Anregung.
Leider besteht die Arbeitsmappe aus rund zwei Dutzend Tabellenblättern und ist zur Bearbeitung durch
mehrere Anwender vorgesehen.
Daher wäre der Arbeitsaufwand, wenn ich alle Blätter beim Einrichten einzeln bearbeiten müsste,
wohl reichlich hoch.
Daher suche ich mal weiter nach einfacheren Lösungen.
LG
AW: Zugriffsrechte nach Anwender unterscheiden
02.05.2019 16:44:15
UweD
Hi
das sollst du ja auch nicht selbst machen, sondern per Makro.
Tipp:
Ich würde aber NICHT den Application.UserName (den kann der Benutzer in Excel umstellen) nehmen sondern Environ("Username") 'der Anmeldename am System.
Microsoft Excel Objekt DieseArbeitsmappe
Option Explicit 
 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    Dim TB 
    With ThisWorkbook 
        For Each TB In .Sheets 
            TB.Protect Password:="ABC" 
        Next 
        .Save 
    End With 
End Sub 
 
Private Sub Workbook_Open() 
    'Abfrage des Excel-Anwenders, der die Datei öffnet 
    'Wenn der Anwendername gleich/ungleich des hinterlegten Namens ist, soll ein Makro starten 
    Dim strUser As String, TB 
    strUser = Application.UserName 
    'strUser = Environ("Username") 'der Anmeldename am System 
    Stop 
    If strUser = ("Meier, Fritz") Or strUser = ("Müller, Jonas") Then ' <> oder = verwenden 
    'Makro starten: 
    MsgBox "Willkommen" 
    With ThisWorkbook 
        For Each TB In .Sheets 
            TB.Unprotect Password:="ABC" 
        Next 
         
    End With 
    Exit Sub 
    Else 
    'Falls Datei von einem anderen Anwender geöffnet wird : 
     MsgBox "Du kummst hier net rein !" & vbCrLf & "Die Datei wird geschlossen" 
     ThisWorkbook.Close False 
    End If 
End Sub 

LG UweD
Anzeige
AW: Zugriffsrechte nach Anwender unterscheiden
02.05.2019 16:58:18
UweD
Microsoft Excel Objekt DieseArbeitsmappe
Option Explicit 
 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    Dim TB 
    With ThisWorkbook 
        For Each TB In .Sheets 
            TB.Protect Password:="ABC" 
        Next 
        .Save 
    End With 
End Sub 
 
'____________________________________________
 
Private Sub Workbook_Open() 
    'Abfrage des Excel-Anwenders, der die Datei öffnet 
    'Wenn der Anwendername gleich/ungleich des hinterlegten Namens ist, soll ein Makro starten 
    Dim strUser As String, TB 
    strUser = Application.UserName 
    'strUser = Environ("Username") 'der Anmeldename am System 
    If strUser = ("Meier, Fritz") Or strUser = ("Müller, Jonas") Then ' <> oder = verwenden 
        'Makro starten: 
        MsgBox "Willkommen " & strUser 
        With ThisWorkbook 
            For Each TB In .Sheets 
                TB.Unprotect Password:="ABC" 
            Next 
        End With 
        Exit Sub 
    Else 
        'Falls Datei von einem anderen Anwender geöffnet wird : 
         MsgBox "Nur Lesezugriff" 
    End If 
End Sub 

Anzeige
AW: Zugriffsrechte nach Anwender unterscheiden
02.05.2019 17:36:18
Wolfgang
Hallo Uwe !
Ich bin mittlerweile zuhause und am Essen kochen,
daher kann ich Deinen Code erst morgen im Büro testen.
Aber beim ersten "Überfliegen" sieht das sehr gut aus
und wird mir sicher sehr weiterhelfen.
Ich danke Dir sehr für die Mühe, die Du Dir gemacht hast !
Schönen Abend !
LG
Wolfgang
AW: Shift-Taste
02.05.2019 15:38:11
Fennek
Hallo Wolfgang,
versuche dir vorzustellen, was ein Nutzer tun muss, damit dein Ansatz scheitert:
im gezeigten Code reicht es während des Öffnens die Shift-Taste zu drücken und das Makro "Workbook_Open" wird nicht ausgeführt.
Generel gilt, dass Excel sind sicher ist, bestensfalls können wenig versierte Nutzer "gebremst" werden.
Ein Ansatz: ein leeres Workbook.xlsm zu öffnen, das nur bei aktivierten Makro das Workbook mit den Daten öffnet.
mfg
Anzeige
AW: Shift-Taste
02.05.2019 15:54:51
Wolfgang
Hallo Fennek !
Danke für Deine Rückmeldung.
Ich habe es leider größtenteils mit "wenig versierten Nutzern" zu tun, daher habe ich ja Angst,
daß meine Pivottabellen und Auswertungen in der Hektik des Tgesgeschäftes zerschossen werden.
Ein einfacher Schutz der Dateien vor diesen Leuten würde also reíchen.
Ein einfaches Makro, daß die Berechtigung nach Nutzer erteilt, wäre da die einfachste Lösung !
Ich werde auf jeden Fall Deinen Vorschlag morgen mal durchdenken und nachspielen.
Vielen Dank dafür.
LG

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige