Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Berechtigung - Environ Username

Berechtigung - Environ Username
Erwin_Geer
Hallo Excelspezialisten,
mit Hilfe des Forums habe ich bereits einige Dinge in meine Tabelle eingebaut.
https://www.herber.de/bbs/user/63312.zip
Jetzt bräuchte ich noch eine Möglichkeit, dass über Environ("USERNAME") gesteuert wird, wer die Datei öffnen darf oder nicht.
Nachdem ich VBA zwar verstehen - aber nicht selbst programmieren kann, hier meine Gedanken
...
If Environ("USERNAME") = "U123456" Then
...öffne diese Datei..
Else
...MsgBox "Sie sind nicht berechtigt"...
...die Datei soll wieder geschlossen werden...
End If
Geht das irgendwie und wo muss ich es einbauen?
Grüße
Erwin
Anzeige
AW: Berechtigung - Environ Username
21.07.2009 10:04:54
Hajo_Zi
Hallo Erwin,
warum öffnest Du die Datei nicht mit einem Passwort (speichern unter, Extra/Tools)

AW: Berechtigung - Environ Username
21.07.2009 10:37:47
Erwin_Geer
Hallo Hajo,
das habe ich noch nie benutzt; wie lege ich die Personen fest (mit USER-ID), die das öffnen dürfen?
In meiner Anwendung will ich das Passwort nicht an "normale" User geben, da diese dann das Passwort untereinander weitergeben.
Grüße
Erwin
Anzeige
Keine personenbezogenen PW möglich
21.07.2009 10:43:59
NoNet
Hallo Erwin,
mit der von Hajo vorgeschlagenene Methode (Datei-Passwort) gibt es nur 1 Passwort - eine personenbezogene Einschränkung gibt es hier leider nicht !
Gruß, NoNet
Berechtigte User in ARRAY auflisten
21.07.2009 10:26:30
NoNet
Hallo Erwin,
der Ansatz ist OK, um mehrere User zu überprüfen, könntest Du diese in einer ARRAY-Variablen auflisten.
Kopiere dazu folgenden Code in das Klassenmodul "DieseArbeitsmappe" :
Private Sub Workbook_Open()
Dim BerechtigteUser()
BerechtigteUser = Array("Hans", "Herber", "Erwin", "U123456", "Nocheiner")
If Not IsError(Application.Match(Environ("Username"), BerechtigteUser, 0)) Then
MsgBox "Sie Sind berechtigt - viel Spaß !"
Else
MsgBox "Sie sind nicht berechtigt, die Datei zu öffnen - Mappe wird geschlossen !", , " _
ALARM !"
ThisWorkbook.Close False 'Mappe ohne Änderungen speichern
End If
End Sub
Bedenke allerdings, dass das Makro nur dann funktioniert, wenn Makros beim Öffnen der Mappe zwingend aktiviert werden, ansonsten ist jegliche Berechtigungsüberprüfung Makulatur !
Mit Excel 2003 kann man übrigens auch Zellbereiche schützen und die Bearbeitung nur für bestimmte Benutzerfreigeben - evtl. ist das in Deinem Fall die "bessere" Lösung ?
Gruß, NoNet
Anzeige
AW: Berechtigte User in ARRAY auflisten
21.07.2009 10:57:25
Erwin_Geer
Hallo NoNet,
deine Lösung past schon ganz gut, so habe ich mir das auch vorgestellt.
Kann man nun noch verhindern, dass man die Tabelle überhaupt sieht, wäre es perfekt.
Vielleicht kann man das auf ein leeres Tabellenblatt umleiten für Unberechtigte?
Grüße
Erwin
AW: Berechtigte User in ARRAY auflisten
21.07.2009 13:23:30
Born
Hallo Erwin,
eine Möglichkeit wäre, alle Tabellenblätter auf xlVeryHidden zu setzen und nur ein "Dummy-Arbeitsblatt" sichtbar zu lassen, da immer ein Sheet sichtbar bleiben muss. Dort könnte der Nutzer dann informiert werden, dass er nicht berechtigt ist.
If Not IsError(Application.Match(Environ("Username"), BerechtigteUser, 0)) Then
for i = 1 to Activeworkbooks.Worksheets.count
worksheets(i).visible=true
next
Else
for i = 2 to Activeworkbooks.Worksheets.count
worksheets(i).visible=xlveryhidden
next
End If
Anzeige
AW: Berechtigte User in ARRAY auflisten
21.07.2009 14:41:30
Erwin_Geer
Hi Born,
danke für die Hilfe.
Bei mir kommt dann Laufzeitfehler 424 - Objekt erforderlich in der Zeile
Else
For i = 2 To Activeworkbooks.Worksheets.Count
Worksheets(i).Visible = xlVeryHidden
Nachdem meine VBA Kenntnisse nicht so toll sind wollte ich fragen, ob du das ganze mal in meine ursprüngliche Datei (wurde hochgeladen s. 1. Anfrage) einbauen kannst.
Vielen Dank schon im voraus
Erwin
Anzeige
AW: Berechtigte User in ARRAY auflisten
25.07.2009 10:49:55
Tino
Hallo,
hier ein Beispiel, schau Dir den Code in DieserArbeitsmappe mal an.
Habe nur die Tabelle Dummy mit "xxx" geschützt.

Die Datei https://www.herber.de/bbs/user/63424.xls wurde aus Datenschutzgründen gelöscht


Gruß Tino
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Berechtigung mit Environ Username in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Navigiere zu "DieseArbeitsmappe" im Projekt-Explorer.

  3. Füge den folgenden Code ein:

    Private Sub Workbook_Open()
       Dim BerechtigteUser()
       BerechtigteUser = Array("Hans", "Herber", "Erwin", "U123456", "Nocheiner")
       If Not IsError(Application.Match(Environ("USERNAME"), BerechtigteUser, 0)) Then
           MsgBox "Sie sind berechtigt - viel Spaß!"
       Else
           MsgBox "Sie sind nicht berechtigt, die Datei zu öffnen - Mappe wird geschlossen!", , "ALARM!"
           ThisWorkbook.Close False 'Mappe ohne Änderungen speichern
       End If
    End Sub
  4. Speichere die Arbeitsmappe als .xlsm (Makro-fähige Datei).

  5. Aktiviere Makros beim Öffnen der Datei, um die Berechtigungsüberprüfung zu ermöglichen.


Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler 424 - Objekt erforderlich

    • Lösung: Stelle sicher, dass du die richtige Syntax verwendest und die Arbeitsmappe aktiv ist. Überprüfe auch, ob der Code im richtigen Modul eingefügt ist.
  • Fehler: Environ("USERNAME") not working

    • Lösung: Überprüfe, ob der Benutzername korrekt in der Array-Variablen aufgelistet ist und dass du die Groß- und Kleinschreibung berücksichtigst.

Alternative Methoden

Wenn du keine VBA-Programmierung verwenden möchtest, kannst du auch:

  • Passwortschutz für die Datei verwenden. Dies ist jedoch weniger flexibel, da es nur ein Passwort für alle Benutzer gibt.
  • Zellen schützen und die Bearbeitung nur für bestimmte Benutzer freigeben, falls du Excel 2003 oder höher verwendest.

Praktische Beispiele

Hier ist ein Beispiel, wie du das Environ-Objekt in einer einfachen Funktion verwenden kannst:

Sub CheckUser()
    Dim userName As String
    userName = Environ("USERNAME")

    MsgBox "Willkommen, " & userName & "!"
End Sub

Dieses Skript zeigt den aktuellen Benutzernamen in einer Meldung an.


Tipps für Profis

  • Verwende Environ$("USERNAME") für eine kürzere Syntax.
  • Du kannst auch andere Umgebungsvariablen wie Environ("USERDOMAIN") verwenden, um zusätzliche Informationen zu sammeln.
  • Denke daran, dass die Sicherheit von VBA-Makros von der Benutzerkonfiguration abhängt. Stelle sicher, dass die Benutzer wissen, wie sie Makros aktivieren können.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Benutzer in der Berechtigungsprüfung hinzufügen?
Du kannst einfach neue Benutzernamen in die Array-Variable BerechtigteUser einfügen, z.B. BerechtigteUser = Array("Hans", "Herber", "Erwin", "U123456", "Nocheiner", "NeuerBenutzer").

2. Was passiert, wenn der Benutzer nicht berechtigt ist?
In diesem Fall wird eine Meldung angezeigt, und die Arbeitsmappe wird geschlossen, ohne Änderungen zu speichern.

3. Kann ich die Sichtbarkeit von Arbeitsblättern steuern?
Ja, du kannst die Sichtbarkeit von Arbeitsblättern mit Worksheets(i).Visible = xlVeryHidden ändern, um unberechtigten Benutzern den Zugriff auf die Blätter zu verwehren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige