Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
464to468
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
464to468
464to468
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Username der bereits geöffneten Tabeller ausgeben

Username der bereits geöffneten Tabeller ausgeben
03.08.2004 13:49:01
Oly
Hallo Leute,
habe ein kleines Anliegen und zwar möchte ich in einer MsgBox den Usernamen ausgeben der eine ExcelDatei zuerst geöffnet hat.
HAbe ich zum Beispiel eine Excel Tabelle auf einen Server liegen und wird von einen 2 User geöffnet so wird mir angezeigt das die Tabelle durch User 1 bereits geöffnet wurde und somit nur noch Schreibgeschützt geöffnet werden kann.
Dieser Username der dort angezeigt wird, wie bekomme ich den in eine MsgBopx oder Textfeld oder Label?
Gruß Oly

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Username der bereits geöffneten Tabeller ausgeben
kdosi
Hallo Oly, ich weiss nicht ob es Dir hilft. Ich schicke Dir zwei Procs, die ich vor einer lengen Zeit gemacht habe. Die Procs arbeiten mit der Property UserStatus. Am Anfang des Codes ist ein Abschnitt aus dem Help, wo Du etwas ueber UserStatus lesen kannst. Gruss kdosi, CZ


Option Explicit
Option Base 1
'UserStatus property
'
'Returns a 1-based, two-dimensional array that provides information about each user who has the workbook open
'as a shared list. The first element of the second dimension is the name of the user, the second element is
'the date and time when the user last opened the workbook, and the third element is a number indicating the
'type of list (1 indicates exclusive, and 2 indicates shared). Read-only Variant.
'
'Remarks
'
'The UserStatus property doesn't return information about users who have the specified workbook open as read-only.
Public Sub SharedUsrList()
    Dim wrb As Workbook, users As Variant
    Dim iRow As Integer, str As String
    
    Set wrb = ActiveWorkbook
    
    users = wrb.UserStatus
    
    For iRow = 1 To UBound(users, 1)
        str = str & "User : " & users(iRow, 1)
        str = str & " , last opened : " & users(iRow, 2)
        Select Case users(iRow, 3)
            Case 1
                str = str & " , type : " & "Exclusive" & vbCrLf
            Case 2
                str = str & " , type : " & "Shared" & vbCrLf
        End Select
    Next
    
    MsgBox str, vbOKOnly, "Users who has this workbook open as a shared list"
    
    
End Sub
Public Sub SharedUsrList_ForAllBooks()
    Dim wrb As Workbook, users As Variant
    Dim iRow As Integer, str As String
    
    For Each wrb In Workbooks
    
        users = wrb.UserStatus
        str = str & wrb.Name & " : " & vbCrLf
        
        For iRow = 1 To UBound(users, 1)
            str = str & "User : " & users(iRow, 1)
            str = str & " , last opened : " & users(iRow, 2)
            Select Case users(iRow, 3)
                Case 1
                    str = str & " , type : " & "Exclusive" & vbCrLf
                Case 2
                    str = str & " , type : " & "Shared" & vbCrLf
            End Select
        Next
        str = str & vbCrLf & vbCrLf
    Next wrb
    
    MsgBox str, vbOKOnly, "All Books"
End Sub
Anzeige
AW: Username der bereits geöffneten Tabeller ausgeben
WernerB.
Hallo Oly,
soweit ich das nach einem kurzen Test beurteilen kann, lösen die beiden Makros von kdosi nicht Dein Problem.
Deine Frage wurde in diesem Forum schon mehrmals in größeren Zeitabständen gestellt. Es ist zwar möglich, abzufragen ob eine bestimmte Datei im Netzwerk bereits geöffnet ist, aber die Ausgabe des betreffenden Anwendernamens scheint nicht ohne Umwege möglich zu sein; wenigstens habe ich noch keine ganz einfache Lösung dafür gefunden.
Ein interessanter Lösungsvorschlag kam vor längerer Zeit von Hans W. Herber (sinngemäß):
Wird die relevante Datei geöffnet, so wird automatisch (per Makro) der Username in eine Text-Datei geschrieben, wobei der vorherige Eintrag überschrieben wird.
Stellt das Makro fest, dass die Datei bereits geöffnet ist, wird der Name aus der Textdatei ausgelesen und per MsgBox angezeigt.
Einen Beispielcode dafür habe ich leider nicht (war auch beim Beitrag von Hans nicht dabei).
Gruß
WernerB.
Anzeige
AW: Username der bereits geöffneten Tabeller ausgeben
Oly
Hallo Werner,
Du hast recht, das Problem ist dadurch nicht behoben. Userstatus kann man nur für nicht schreibgeschüzte Dateien verwenden. Da die Datei jedoch zweimal oder mehr geöffnet wird wird sie allerdings schreibgeschützt geöffnet und somit tritt ein fehler auf.
Gruß Oly

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige