Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Wer hat Datei geöffnet per MSGBOX ?

Wer hat Datei geöffnet per MSGBOX ?
chris
Hallo Forumsbesucher und VBA Spezialisten,
ich habe eine frage.Diese habe ich glaube ich schon einmal gestellt und habe keine Lösung bekommen.
Ich habe unten einen Code den ich erweitern möchte.
Ich habe eine MasterDatei in der steht volgender Code.

Option Explicit
Sub starte_Datei()
Dim cb As Workbook
Set cb = Workbooks.Open("C:\test.xls")
If cb.ReadOnly = True Then
MsgBox ("Datei wird gerade bearbeitet, und wid nicht Schreibgeschützt geöffnet!"), vbCritical, " _
Bitte beachten"
cb.Close False
Else
'Datei kann geöffnet bleiben
End If
End Sub
Mit diesem Code öffne ich eine Datei.Wenn aber die Datei "test.xls" Schreibgeschützt ist, also wenn ein anderer User die Datei gerade bearbeitet kommt eine msgbox und die Datei wird geschlossen.
Wie schaffe ich es in diese MSGBOX noch den Namen des Users zu bekommen der die Datei gerade geöffnet hat ? So das die msgbox so aussieht.

MsgBox ("Datei wird gerade bearbeitet von " & HierDerUsername & " , und wird nicht Schreibgeschü _
tzt geöffnet!"), vbCritical, "Bitte beachten"

vielen Dank an alle Helfer !
gruß Chris
Anzeige
AW: Wer hat Datei geöffnet per MSGBOX ?
20.08.2009 12:51:13
MichaV
Hallo, kommt diese Meldung nicht sowieso von Excel, wenn die Datei offen ist?
Gruss- Micha
AW: noch offen
20.08.2009 14:10:06
chris
Hallo Micha,
nicht wenn ich die Datei mit diesem Code starte.

  • Set cb = Workbooks.Open("C:\test.xls")

  • Das ist ja das Problem.
    Es kommt nur meine Makro Meldung (msgbox) und dann wird die Datei Geschlossen.
    Danke für weitere Hilfen an alle !
    Anzeige
    Wer hat Datei geöffnet per MSGBOX ?
    20.08.2009 19:57:36
    MichaV
    Hallo,
    ja das ist ein Problem, wusste ich nicht.
    Das hier wäre eine Möglichkeit, funzt bei mir nachdem ich 10x die Treppe hoch- und runtergerannt bin :o)
    In der Mappe, die geöffnet werden soll:
    
    Option Explicit
    Private Sub Workbook_Open()
    If ThisWorkbook.ReadOnly Then Exit Sub
    ThisWorkbook.CustomDocumentProperties("user") = Environ("Username")
    ThisWorkbook.Save
    End Sub
    Sub CustomDocumentProperties_hinzufuegen()
    'nur einmal ausführen
    With ThisWorkbook.CustomDocumentProperties
    .Add Name:="last_user", LinkToContent:=False, Type:=msoPropertyTypeString, Value:=Environ(" _
    Username")
    End With
    End Sub
    

    Und in der Mappe, die öffnet:
    
    Sub test()
    Dim wb As Workbook
    Set wb = Workbooks.Open("\\Glados\daten (d)\Micha\Excel\a.xls")
    If wb.ReadOnly Then
    MsgBox "gesperrt durch " & wb.CustomDocumentProperties("user")
    End If
    End Sub
    

    Guss- Micha
    Anzeige
    AW: Wer hat Datei geöffnet per MSGBOX ?
    20.08.2009 21:03:22
    chris
    Das ist ne möglichkeit :)
    danke Micha und schönes WE !
    Danke für die Rückmeldung mT
    21.08.2009 00:24:57
    MichaV
    .Add Name:="last_user" muss natürlich .Add Name:="user" heissen.
    Dir auch ein schönes WE, Gruß- Micha
    AW: Wer hat Datei geöffnet per MSGBOX ?
    20.08.2009 14:54:55
    ChrisL
    Hallo Chris
    Mit folgendem Code erzeugst du eine kleine Textdatei, wo der Username drin gespeichert wird...
    Sub starte_Datei()
    Dim cb As Workbook
    Dim strDatei As String, strUsername
    Set cb = Workbooks.Open("C:\Dokumente und Einstellungen\All Users\Dokumente\test2.xls")
    strDatei = cb.Path & "\tag.txt"
    If cb.ReadOnly = True Then
    Open strDatei For Input As #1
    Line Input #1, strUsername
    MsgBox "Datei wird gerade bearbeitet von " & strUsername, vbCritical, "Bitte beachten"
    cb.Close False
    Else
    Close #1
    Open strDatei For Output As #1
    Print #1, Environ("Username")
    End If
    Close #1
    End Sub
    
    cu
    Chris
    Anzeige
    AW: Wer hat Datei geöffnet per MSGBOX ?
    20.08.2009 15:24:23
    chris
    Danke das ist möglich.
    Aber dazu müsste es ein Netzlaufwerk geben auf das jeder zugreifen kann :(
    Danke für den Tipp.Ich dachte es geht anders.
    deshalb lass ich einfach noch einmal offen.
    Vielen Dank !
    AW: Wer hat Datei geöffnet per MSGBOX ?
    20.08.2009 19:27:00
    ChrisL
    Hallo Chris
    Danke für die Rückmeldung. Ist ein solches Netzwerk nicht Grundvoraussetzung? Bin leicht verwirrt, weil ohne Netzwerk kann die Datei ja nicht durch mehrere Benutzer gleichzeitig in Bearbeitung sein oder mache ich vielleicht einen Überlegungsfehler.
    cu
    Chris
    Anzeige
    ;
    Anzeige
    Anzeige

    Infobox / Tutorial

    MSGBOX: Wer hat die Datei geöffnet?


    Schritt-für-Schritt-Anleitung

    Um herauszufinden, wer eine Excel-Datei geöffnet hat, kannst du den folgenden VBA-Code verwenden. Dieser prüft, ob die Datei von einem anderen Benutzer geöffnet ist und zeigt den Benutzernamen in einer MsgBox an.

    1. Öffne die Master-Datei in Excel.
    2. Füge den folgenden Code in ein Modul ein:
    Option Explicit
    Sub starte_Datei()
        Dim cb As Workbook
        Set cb = Workbooks.Open("C:\test.xls")
        If cb.ReadOnly = True Then
            MsgBox "Datei wird gerade bearbeitet von " & wb.CustomDocumentProperties("user"), vbCritical, "Bitte beachten"
            cb.Close False
        Else
            ' Datei kann geöffnet bleiben
        End If
    End Sub
    1. Stelle sicher, dass in der Datei test.xls die Benutzerinformation gespeichert wird, bevor sie geschlossen wird. Dies kannst du mit dem folgenden Code tun:
    Private Sub Workbook_Open()
        If ThisWorkbook.ReadOnly Then Exit Sub
        ThisWorkbook.CustomDocumentProperties("user") = Environ("Username")
        ThisWorkbook.Save
    End Sub
    1. Speichere die Änderungen und teste den Code, um zu sehen, ob der Benutzername korrekt angezeigt wird.

    Häufige Fehler und Lösungen

    • Fehler: MsgBox zeigt keinen Benutzernamen an

      • Lösung: Überprüfe, ob das CustomDocumentProperties korrekt gesetzt wurde. Stelle sicher, dass der Name der Eigenschaft „user“ ist und dass die Datei gespeichert wurde.
    • Fehler: Datei lässt sich nicht öffnen

      • Lösung: Stelle sicher, dass der Pfad zur Datei korrekt ist und die Datei nicht von einem anderen Prozess gesperrt ist.

    Alternative Methoden

    Falls du keine VBA-Lösungen verwenden möchtest, könntest du auch ein externes Tool in Betracht ziehen, das dir zeigt, welche Benutzer auf das Excel-Dokument zugreifen. Eine andere Möglichkeit ist, eine Textdatei zu erstellen, die den Benutzernamen speichert, wenn die Datei geöffnet wird.

    Sub starte_Datei()
        Dim cb As Workbook
        Dim strDatei As String, strUsername
        Set cb = Workbooks.Open("C:\Dokumente und Einstellungen\All Users\Dokumente\test2.xls")
        strDatei = cb.Path & "\tag.txt"
        If cb.ReadOnly = True Then
            Open strDatei For Input As #1
            Line Input #1, strUsername
            MsgBox "Datei wird gerade bearbeitet von " & strUsername, vbCritical, "Bitte beachten"
            cb.Close False
        Else
            Close #1
            Open strDatei For Output As #1
            Print #1, Environ("Username")
        End If
        Close #1
    End Sub

    Praktische Beispiele

    1. Beispiel für das Anzeigen des Benutzernamens bei einer MsgBox:

      If cb.ReadOnly Then
         MsgBox "Die Datei ist gesperrt von: " & wb.CustomDocumentProperties("user"), vbCritical, "Zugriff verweigert"
      End If
    2. Beispiel für die Speicherung des Benutzernamens in einer Textdatei:

      Open "C:\test.txt" For Output As #1
      Print #1, Environ("Username")
      Close #1

    Tipps für Profis

    • Achte darauf, dass das Speichern von CustomDocumentProperties nur funktioniert, wenn die Datei mit Schreibrechten geöffnet wird.
    • Verwende vbCritical in MsgBox, um sicherzustellen, dass die Warnung deutlich hervorgehoben wird.
    • Teste den Code in einer sicheren Umgebung, bevor du ihn in einer produktiven Umgebung einsetzt.

    FAQ: Häufige Fragen

    1. Wie kann ich prüfen, ob die Datei von einem anderen Benutzer geöffnet ist?
    Du kannst dies tun, indem du den ReadOnly-Status des Workbooks überprüfst, wie im obigen Beispiel gezeigt.

    2. Kann ich den Benutzernamen auch ohne VBA anzeigen?
    Eine direkte Anzeige ist ohne VBA nicht möglich, du könntest jedoch eine alternative Methode verwenden, um Benutzerinformationen extern zu speichern.

    3. Funktioniert dieser Code in allen Excel-Versionen?
    Der bereitgestellte Code sollte in den meisten modernen Excel-Versionen (ab Excel 2007) funktionieren, da er grundlegende VBA-Funktionen nutzt.

    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