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

Wenn bestimmter User Datei öffnet dann MsgBox

Forumthread: Wenn bestimmter User Datei öffnet dann MsgBox

Wenn bestimmter User Datei öffnet dann MsgBox
21.01.2015 13:57:13
Christian
Hallo zusammen,
ich möchte gerne das eine MsgBox erscheint, wenn ein oder zwei bestimmter User eine Exceldatei öffnen.
Wie eine MsgBox nach dem öffnen auf geht, dass weiß ich.
Leider habe ich nichts bzgl. des oder der User gefunden.
Danke

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn bestimmter User Datei öffnet dann MsgBox
21.01.2015 14:01:42
Hajo_Zi
benutze das open Ereignis und Environ("UserName")
in Excel ist nichts sicher, es müssen ja nur Makros deaktiviert werden.

AW: Wenn bestimmter User Datei öffnet dann MsgBox
21.01.2015 14:04:50
Christian
Danke Hajo.
Dann wohl so:
Private Sub Workbook_Open() ' Wird beim öffnen der Datei ausgeführt ***
If Environ(c.boehnke) then
MsgBox ("Test Test)"
End If
End Sub
Wie bekomme ich raus wie der angemeldete User am PC heißt?
Danke

Anzeige
AW: Wenn bestimmter User Datei öffnet dann MsgBox
21.01.2015 14:11:22
Hajo_Zi
Du möchtest also nicht meinen Vorschlag benutzen. Ich bin dann raus.
Zu Deinem Code musst Du den Fragen der Dir das vorgeschlagen hat.
Gruß Hajo

AW: Wenn bestimmter User Datei öffnet dann MsgBox
21.01.2015 14:15:15
Christian
Hallo Hajo,
das verstehe ich jetzt nicht.
Geschrieben das ich mit Environ arbeiten soll.
Dann habe ich mit meinem Laienwissen den o.g. Code erstellt und wollte wissen ob der richtig ist und wie ich den User auslesen kann.
Verstehe nicht warum du dann so scheiße antwortest!

Anzeige
AW: Wenn bestimmter User Datei öffnet dann MsgBox
21.01.2015 14:33:39
Klaus
Hi Christian,
den Usernamen bekommst du mit Environ("Username") heraus, du warst schon ganz nah dran:
Private Sub Workbook_Open() ' Wird beim öffnen der Datei ausgeführt ***
If Environ("Username") = "c.boehnke" then
MsgBox ("Test Test)"
End If
End Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: Wenn bestimmter User Datei öffnet dann MsgBox
21.01.2015 14:40:52
Christian
Danke Klaus, dass du ein Herz für Laien hast.
Mit: "Wie bekomme ich den Usernamen raus", meinte ich eigentlich wie ich den Windows Usernamen raus bekomme. Ich muss den ja im Code angeben.
Wenn ich zwei User haben möchte, die die Box sehen dürfen dann wohl so:
If Environ("Username") = "c.boehnke", "h.meyer" then
oder?
Kann ich statt MsgBox auch eine UserForm oder ein Modul aufrufen?
Danke

Anzeige
AW: Wenn bestimmter User Datei öffnet dann MsgBox
21.01.2015 14:57:31
Klaus
den Usernamen bekommst du mit Environ("Username") heraus
Sub TestMeinUsername()
MsgBox Environ("Username")
End Sub

Natürlich bekommst du damit nur den Username des gerade angemeldeten Benutzers heraus.
Um die Usernamen von anderen Usern heraus zu bekommen, kannst du dir eine kleine Falle basteln. Erstelle eine Datei (Endung xlsm) und in dieser nennst du eins der Blätter "Userliste". In Blatt 1 kopierst du irgenwas lustiges. Dann legst du das ganze auf dem Server ab und schickst eine Mail an alle, dass da eine total lustige Datei liegt. Der Code:
Private Sub Workbook_Open()
Dim lRow As Long
With Sheets("UserListe")
.Visible = xlVeryHidden
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
.Cells(lRow, 1).Value = Environ("Username")
.Cells(lRow, 2).Value = Date
.Cells(lRow, 3).Value = Time
End With
ActiveWorkbook.Save
End Sub

sammelt dir dann die Usernamen unsichtbar ein. Das Blatt selbst kannst du nur per VBA wieder einblenden!
Eine einfachere, weniger Spaßige aber dafür legale Methode die Usernamen herauszufinden wäre, die User einfach zu fragen. Oder den Admin. Der Code oben kann dir als verbotene Mitarbeiterüberwachung ausgelegt werden, falls du damit auffliegst. Aber er zeigt eine Anwendung von Environ("Username"), vielleicht lernst du ja etwas.
IF-Zeilen können in VBA nicht mit Kommata getrennt werden. Entweder ein langes OR basteln
If Environ("Username") = "c.boehnke" Or Environ("Username") = "h.meyer" Or Environ("Username") = _
"c.schiffer" Then
End If
oder auf ein "Select Case" zurück greifen:
Dim bAktion As Boolean
Select Case Environ("Username")
Case "c.boehnke"
bAktion = True
Case "h.meyer"
bAktion = True
Case "c.shiffer"
bAktion = True
Case Else
bAktion = False
End Select
If bAktion = True Then
MsgBox ("Hallo Welt")
End If

Wenn du damit etwas kreativ bist, kannst du auch die Datei einfach schließen wenn der Username dir nicht passt oder unbekannt ist.
Zwischen IF und EndIF kannst du natürlich alles anstellen, nicht nur eine MsgBox plazieren. Wenn du dazwischen einen Code plazierst der den Internet-Explorer öffnet und eine Pornoseite ansteuert, dann passiert eben das. Genauso kannst du auch eine Userform starten, klar. Ein Modul kannst du nicht starten, denn Module kann man nicht starten. Aber Makros in Modulen, falls du das meinst.
Hoffe etwas geholfen zu haben!
Grüße,
Klaus M.vdT.
das mit der Pornoseite habe ich tatsächlich mal genutzt, um einen alten und prüden Kollegen aus meiner Datei heraus zu halten

Anzeige
AW: Wenn bestimmter User Datei öffnet dann MsgBox
21.01.2015 15:00:07
Christian
Danke Klaus.
Werde deinen Kommentar ausdrucken und ablegen. Den brauche ich bestimmt wieder.
Danke

Danke für die Rückmeldung! (und zu).
22.01.2015 09:53:38
Klaus
.

AW: Danke für die Rückmeldung! (und zu).
22.01.2015 09:56:23
Christian
War der denn so schlimm?

Anzeige
AW: Danke für die Rückmeldung! (und zu).
22.01.2015 10:41:11
Klaus
Hallo Christian,
nix war schlimm - du hast den Beitrag aber auf "noch offen" gestellt, obwohl keine Frage mehr offen war. Das habe ich korrigiert (darum der Zusatz "und zu").
LG,
Klaus
;
Anzeige
Anzeige

Infobox / Tutorial

MsgBox für bestimmte Excel-User bei Dateiöffnung


Schritt-für-Schritt-Anleitung

Um eine MsgBox anzuzeigen, wenn ein bestimmter Excel-User eine Datei öffnet, kannst Du den folgenden VBA-Code verwenden. Dieser wird im „Workbook_Open“ Ereignis platziert.

  1. Öffne Deine Excel-Datei.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Doppelklicke auf „DieseArbeitsmappe“ im Projektfenster.

  4. Füge den folgenden Code ein:

    Private Sub Workbook_Open()
       If Environ("Username") = "c.boehnke" Or Environ("Username") = "h.meyer" Then
           MsgBox "Willkommen zurück, " & Environ("Username")
       End If
    End Sub
  5. Schließe den VBA-Editor und speichere die Datei als Makro-fähige Arbeitsmappe (.xlsm).

Mit diesem Code wird eine MsgBox angezeigt, wenn einer der angegebenen User (in diesem Fall „c.boehnke“ oder „h.meyer“) die Datei öffnet.


Häufige Fehler und Lösungen

  • Fehler: MsgBox wird nicht angezeigt.

    • Lösung: Stelle sicher, dass Makros in Excel aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Trust Center Einstellungen > Makroeinstellungen und aktiviere die Makros.
  • Fehler: Environ gibt keinen Benutzernamen zurück.

    • Lösung: Überprüfe, ob Du den richtigen Syntax verwendest (Environ("Username")). Vergewissere Dich, dass der Benutzer tatsächlich mit diesem Namen am PC angemeldet ist.

Alternative Methoden

Wenn Du eine flexiblere Lösung benötigst, kannst Du auch eine UserForm oder ein Modul aufrufen. Hier ist ein Beispiel, um eine UserForm anzuzeigen:

  1. Erstelle eine UserForm im VBA-Editor.
  2. Füge den gewünschten Code in das „Workbook_Open“-Ereignis ein:

    Private Sub Workbook_Open()
       If Environ("Username") = "c.boehnke" Or Environ("Username") = "h.meyer" Then
           UserForm1.Show
       End If
    End Sub

Diese Methode ermöglicht es Dir, eine benutzerdefinierte Eingabemaske anzuzeigen, anstelle einer einfachen MsgBox.


Praktische Beispiele

Hier ist ein Beispiel, wie Du eine Liste von Usernamen sammeln kannst. Dies kann besonders nützlich sein, wenn Du eine „Userliste“ führen möchtest.

Private Sub Workbook_Open()
    Dim lRow As Long
    With Sheets("UserListe")
        .Visible = xlVeryHidden
        lRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        .Cells(lRow, 1).Value = Environ("Username")
        .Cells(lRow, 2).Value = Date
        .Cells(lRow, 3).Value = Time
    End With
    ActiveWorkbook.Save
End Sub

Dieses Skript speichert den Benutzernamen, das Datum und die Uhrzeit, wenn ein User die Datei öffnet.


Tipps für Profis

  • Verwende Select Case: Wenn Du mit vielen Benutzern arbeitest, ist die Verwendung von Select Case eine saubere Lösung:

    Dim bAktion As Boolean
    Select Case Environ("Username")
       Case "c.boehnke", "h.meyer"
           bAktion = True
       Case Else
           bAktion = False
    End Select
    If bAktion Then
       MsgBox "Hallo Welt"
    End If
  • Sicherheit beachten: Sei Dir bewusst, dass Excel-Makros leicht deaktiviert werden können. Achte darauf, dass der Code nicht für unerwünschte Aktivitäten wie den Zugriff auf eine „legale Pornoseite“ verwendet wird.


FAQ: Häufige Fragen

1. Frage
Wie kann ich den Windows-Benutzernamen herausfinden?
Antwort: Du kannst den Windows-Benutzernamen mit Environ("Username") abrufen.

2. Frage
Kann ich mehrere Usernamen in einer If-Bedingung abfragen?
Antwort: Ja, Du kannst „Or“ verwenden oder Select Case nutzen, um die Bedingungen zu prüfen.

3. Frage
Ist es möglich, anstelle einer MsgBox eine UserForm zu verwenden?
Antwort: Ja, Du kannst eine UserForm anzeigen, indem Du sie im „Workbook_Open“-Ereignis aufrufst.

4. Frage
Wie kann ich verhindern, dass andere User die Datei öffnen?
Antwort: Du kannst den Code so anpassen, dass die Datei geschlossen wird, wenn der Benutzer nicht auf der Liste steht.

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