Anzeige
Archiv - Navigation
1080to1084
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 ändern

Zugriffsrechte ändern
12.06.2009 08:02:08
Christoph
Hallo,
ich habe folgendes Problem:
Ich verwalte die Zugriffsberechtigungen in einer Netzwerkfreigabe. Aufgrund der vielen Nutzer und der vielen Ordner ist es sehr mühselig, dies mit Windows-Bordmitteln zu tun.
Meine Idee:
Wenn ich sowieso eine Excelliste mit den Berechtigungen anlege, kann diese mir doch gleich die Änderungen ausführen.
Ist das so ohne Weiteres mit Excel 2003 möglich und wenn ja wie? Vielen Dank im Voraus.
Christoph

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zugriffsrechte ändern
12.06.2009 12:38:47
Ramses
Hallo
Hier mal ein Beispiel das Dir als Ansatz dienen soll.
Hatte ich vor längerer Zeit mal bei uns im Betrieb gebraucht
Sub Open_File_on_Not_Yet_Shared_Network_Drive()
    '(C) by Ramses
    'Öffnet den GetOpenFile-Dialog direkt auf eine Datei
    'auf einem Netzlaufwerk dessen Server und Freigabe-Name zwar bekannt
    'dessen LW-Bezeichnung jedoch nicht bekannt ist
    'Kommt häufig vor in Firmen oder wenn manuelle
    'Laufwerke gemappt werden, oder USB-Laufwerke
    'verwendet werden, welche die normalen Laufwerksbezeichnungen
    'verändern
    Dim i As Byte, x As Variant
    Dim OrigDrive As String, FreeDrive As String
    Dim defShare As String, defPath As String, defName As String
    Dim openFile As String, defDrive As String
    Dim shUsername As String, shPassword As String, shDomain As String
    OrigDrive = Left(ThisWorkbook.FullName, 1)
    'Backslash beachten !!!
    'Zur Freigabe auf dem jeweiligen Rechner
    defShare = "\\ServerName\Freigabename"
    'Unterstruktur bis zur Datei
    defPath = "\Unterordner\"
    'Dateiname
    defName = "Datei.xls"
    'Username der auf die Netzwerkfreigabe zugreifen darf
    shUsername = "Ramses"
    'Passwort des berechtigten Users
    shPassword = "Ramses"
    'Eventuel Domäne in der der User bekannt ist
    'wenn nicht aus der lokalen Domäne
    shDomain = "Domäne"
    If myFreeDrive = "Null" Then
        'normales öffnen zum Browsen
        'wenn kein Laufwerksname mehr zur Verfügung steht
        MsgBox "Datei kann nicht direkt angezeigt werden." & Chr$(13) & _
        "Die Datei: """ & defName & """ liegt auf: """ & defShare & defPath & """"
        'Alle Laufwerksbezeichnungen sind verwendet
        'Der User muss nun manuell auf die Datei browsen
        openFile = Application.GetOpenFilename(defName & " (*.xls), *.xls")
    Else
        defDrive = myFreeDrive
        'Erstellen eines temporären Netzlaufwerkes ohne Username und Passwort
        x = Shell("cmd.exe /C net use " & defDrive & ": " & defShare)
        'Erstellen eines temporären Netzlaufwerkes mit Username und Passwort
        'Ohne Domäne
        'x = Shell("cmd.exe /C net use " & defDrive & ": " & defShare & _
        " " & shPassword & " /User:" & shUsername)

        'Mit fremder Domäne
        'x = Shell("cmd.exe /C net use " & defDrive & ": " & defShare & _
        " " & shPassword & " /User:" & shDomain & "\" & shUsername)

        'in das Verzeichnis wechseln
        ChDrive defDrive
        'in den Unterordner wechseln
        ChDir defDrive & ":" & defPath
        'dialog anzeigen
        openFile = Application.GetOpenFilename(defName & " (*.xls), *.xls")
        'Temporäres Laufwerk wieder löschen
        x = Shell("cmd.exe /C net use " & defDrive & " /Delete")
    End If
    'Die gewählte Datei öffnen
    Workbooks.Open (openFile)
End Sub

Gruss Rainer
Anzeige
Vergessen,... das fehlt noch.
12.06.2009 12:40:26
Ramses
Hallo
Diese Funktion gehört natürlich noch mit dazu
Function myFreeDrive() As String
    '(c) ramses
    'Sucht den nächsten freien Laufwerksnamen
    Dim myFSO As Object, myDrv As Object, drvCount, drvStr As String, vName As String, drvTyp As String
    Dim drvmax As Byte, drvNum As Byte
    Set myFSO = CreateObject("Scripting.FileSystemObject")
    Set drvCount = myFSO.Drives
    For Each myDrv In drvCount
        Select Case myDrv.DriveType
                'DriveType 3 sind netzlaufwerke
                'diese werden normalerweise von Z absteigend
                'gemappt. Relative Fehlerquelle !!!
                'Wenn sich der Admin nicht an die Convention hält :-)
            Case 3: drvmax = 90 - 1
            Case Else:
                'Val(Asc(myDrv.DriveLetter))
                'erstellt einen nummerischen Wert aus dem Buchstaben
                If drvNum = 0 Then
                    drvNum = Val(Asc(myDrv.DriveLetter))
                End If
                If drvNum < Val(Asc(myDrv.DriveLetter)) Then
                    drvNum = Val(Asc(myDrv.DriveLetter))
                End If
        End Select
    Next
    If drvmax <= drvNum Then
        myFreeDrive = "Null"
    Else
        'Wandelt die entsprechende Nummer + 1
        'in einen zulässigen Laufwerksbuchstaben um
        myFreeDrive = Chr(drvNum + 1)
    End If
End Function
'Ende CodeSequenz

Gruss Rainer
Anzeige
AW: Vergessen,... das fehlt noch.
13.06.2009 09:27:47
Christoph
Hallo Rainer,
danke für die schnelle Antwort. Doch leider triffst du den Nagel nicht so ganz auf den Kopf.
Ich habe mehrere Ordner und auch mehrere User. Nun möchte ich den verschiedenen Usern auf den Ordnern verschiedene Zugriffsberechtigungen einrichten. Z.B.: User1 hat Vollzugriff auf alle Ordner, User2 hat schreibenden Zugriff auf Ordner 1-5 und User2 darf in den Ordnern 1-5 nur lesen usw.
Um die unterschiedlichen Berechtigungen zu dokumentieren, habe ich mir eine Exceltabelle erstellt, in der die Nutzer in der Zeile 1 stehen (User1 in C1, User2 in D1, User3 in E1 ...) und die Ordnernamen in der Spalte B stehen (Ordner1 in B3, Ordner 2 in B4, Ordner 3 in B5). In den Schnittpunkten der User und Ordner (User1 und Ordner1 -> Zelle C3) steht die Berechtigung, die der User im jeweiligen Ordner hat (Lesen = 1, Schreiben = 2 und Vollzugriff = 4).
Meine Frage ist nun, wie kann ich die Berechtigungen der jeweiligen Ordner automatisch "übertragen" ohne die Eigenschaften eines jeden Ordners manuell ändern zu müssen?
Anzeige
AW: ASCII-Zeichen 'BD' ausgeben
14.06.2009 15:01:36
Ramses
Hallo
Du hast doch VBA gut angegeben und vergibst die Freigaben.
Mit dem Befehl "NET SHARE" kannst du das auf der commandozeile erledigen.
Pass den code entsprechend dem Befehl auf der Commandozeile an,... fertig
Gruss Rainer

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige