MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 06.12.2017, 19:01   #1
casati
Neuer Benutzer
Neuer Benutzer
Standard VBA - Berechtigungen für Bereiche per VBA zuweisen

Hallo Entwickler,
ich bin mal wieder an einem Problem, für das ich bisher auch im Forum keine Lösung gefunden habe.

Ich habe eine Arbeitsmappe, die neben einigen Admin-Tabellen auch Monatstabellen (Januar – Dezember) enthält. In diesen Monatstabellen sind Bereiche für die die jeweiligen Tage vorhanden, die über unterschiedliche Berechtigungen verfügen. Die Tabellen/Bereiche sind vom Aufbau her schreibgeschützt und gewisse Inhalte (Zellen) dürfen von allen Usern oder über die Funktion „Benutzer dürfen Bereiche bearbeiten“ nur von bestimmten Usern bearbeitet werden. Die Einstellung der Benutzerberechtigungen in „Bereiche bearbeiten“ wurde so gewählt, dass die dort eingetragenen User kein Passwort eingeben müssen, da sie sich über den Netzwerkzugriff und ihren Usernamen bereits legitimiert haben.

Die Berechtigungen habe ich über eine Mustertabelle vergeben, die zum Erstellen der Tages/Monatstabellen per VBA kopiert wird. War diese Idee anfangs recht gut, steckt der Teufel doch nun im Detail. Ändern sich die berechtigten User, muss ich alle definierten Bereiche einzeln anfassen. Dies wären maximal 365 Bereiche x Anzahl der jeweiligen User, die für eine Änderung anstehen. Händisch nicht zu leisten. Per VBA fehlt mir der Code, wie ich diese Funktion aufrufen und für die definierten Bereiche über „Berechtigungen“ User hinzufügen bzw. löschen kann. Die Usernamen sind bekannt und sollen mit einer Select Case-Anweisung geprüft werden. Dies ist dann sicherlich ebenso unproblematisch wie das Entfernen und Setzen des Blattschutzes.

Es wäre wirklich prima, wenn jemand eine Idee hätte.

Viele Grüße

Casati
casati ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.12.2017, 19:03   #2
rastrans
MOF Koryphäe
MOF Koryphäe
Standard

Code:

Sub SetUser(Username As String, Entfernen As Boolean)
    Dim ws As Worksheet
    Dim aedAllowEditRange As AllowEditRange
    Dim uaUserAccess As UserAccess
    Dim bolFound As Boolean
    
    For Each ws In ThisWorkbook.Worksheets
        ws.Unprotect ("Passwort")
        For Each aedAllowEditRange In ws.Protection.AllowEditRanges
            For Each uaUserAccess In aedAllowEditRange.Users
                bolFound = StrComp(uaUserAccess.Name, Username, vbTextCompare) = 0
                If bolFound Then
                    If Entfernen Then uaUserAccess.Delete
                    Exit For
                End If
            Next uaUserAccess
            If Not (bolFound Or Entfernen) Then aedAllowEditRange.Users.Add Username, True
        Next aedAllowEditRange
        ws.Protect ("Passwort")
    Next ws
End Sub
Diese Prozedur erwartet den Netzwerknamen und einen Hinweis, ob der Anwender gelöscht werden soll, oder hinzugefügt werden soll. Beispiel
Code:

Sub Test()
    SetUser Username:="Netzwerkrastrans", Entfernen:=False
End Sub
Um die Änderung durchführen zu dürfen, benötigt man ein ungeschützes Worksheet. Das Kennwort musst du im Code noch ändern.

__________________

There are 10 different types of people in the world. Those who understand the binary system and those who not.

Da für die Helfer der einzige Lohn eine Rückmeldung ist, wäre ein kurzes Feedback wünschenswert.
Auch sehen andere User, die ein ähnliches Problem haben, inwiefern die Lösung zur Beseitigung des Problems beigetragen hat.
Übrigens : Hilfreiche und positive Beiträge kann man auch bewerten!
rastrans ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2017, 12:41   #3
casati
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Strahlen

Hallo Rastrans,
vielen Dank für die Hilfe. Ich habe es noch nicht völlig durchdrungen und testen können. Was ich in der Hilfe nachgelesen habe, ist der Code aber genau der Schlüssel für mein Problem. Mir hat allein schon das Objekt gefehlt, mit dem die Berechtigungen per VBA definiert/ausgewertet werden. Werde am Wochenende den Code integrieren und hoffe, dass ich es hinbekomme.
Casati
casati ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.