ich möchte gerne die letzten drei Benutzer eines Dokumentes anzeigen und in einer MSGBOX speichern. Diese Daten sollen auch nach dem schliessen des Dokumentes im Hintergrund
vorhanden sein.
Vielen Dank
1. in der msgbox kannst Du nicht speichern, höchstens anzeigen
2. was heisst für dich nach dem schließen des dokuments (tabelle) im hintergrund vorhanden
meine lösung für sowas ist ein "verstecktes" blatt, in das die Benutzernamen einer nach dem anderen, ggfalls mit Zugriffszeit eingetragen werden.....wäre das was für dich?
michel
ich hatte auch ma das gleiche Problem und habe es folgendermaßen gelöst:
Option Explicit
'Computername
Private Declare Function GetComputerName Lib "kernel32" _
Alias "GetComputerNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long
'Anwendername
Declare Function GetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public Sub Historie()
Dim strString As String 'Computername
Dim strID As String 'Anwendername
Dim lngSize As Long
Dim lngAns As Long
Dim rngSpDat As String 'Datum
Dim rngSpZeit As String 'Zeit
Dim rngPfad As String 'Pfad
Dim i As Integer
On Error Resume Next
'Ermittlung Computername
rngSpDat = Date
rngSpZeit = Time
rngPfad = Application.ActiveWorkbook.FullName
strString = String(255, Chr$(0))
GetComputerName strString, 255
strString = Left$(strString, InStr(1, strString, Chr$(0)))
'Ermittlung Anwendername
lngSize = 8
strID = " "
lngAns = GetUserName(strID, lngSize)
EINTRAG:
i = ActiveWorkbook.Sheets("Historie").Cells(Rows.Count, 3).End(xlUp).Row
If i = 1 Then
With ActiveWorkbook.Sheets("Historie")
.Cells(i, 1).Value = strString
.Cells(i, 2).Value = strID
.Cells(i, 3).Value = rngSpDat
.Cells(i, 4).Value = rngSpZeit
.Cells(i, 5).Value = rngPfad
End With
End If
If i = 11 Then
ActiveWorkbook.Sheets("Historie").Rows(2).Delete
GoTo EINTRAG
Else
With ActiveWorkbook.Sheets("Historie")
.Cells(i + 1, 1).Value = strString
.Cells(i + 1, 2).Value = strID
.Cells(i + 1, 3).Value = rngSpDat
.Cells(i + 1, 4).Value = rngSpZeit
.Cells(i + 1, 5).Value = rngPfad
End With
End If
On Error GoTo 0
End Sub
In die erste Zeile wird dauerhaft der allererste User eingetragen, danach werden fortlaufende die letzten 10 User gespeichert, wobei immer einer nachrückt, da Zeile 2 gelöscht wird.
Gruß,
Carsten
Sub username()
Dim X As Integer
Y = Cells(Rows.Count, 1).End(xlUp).Offset(0, 1).Row
Sheets("Tabelle1").Visible = True
Sheets("Tabelle1").Cells(Y, 1).Value = Application.username
Sheets("Tabelle1").Cells(Y, 2).Value = Date
Sheets("Tabelle1").Cells(Y, 3).Value = Time
Sheets("Tabelle1").Visible = False
End Sub
Gruß
Willie
kann Dir da auch nicht genau weiterhelfen.
Bei mir steht der Code in einem ganz normalen Modul und wird vor jedem Speichern aufgerufen. Der Username ist der Name, mit dem der User sich ins Netzwerk einloggt.
Ne andere Möglichkeit wäre noch Application.Username ist aber nicht so eindeutig, da es sich um den Namen unter Extras/Optionen handelt.
Gruß,
Carsten
ist ja lustig, bei mir im Code hatte ich es auch vergessen, hat aber immer einwandfrei funktioniert.
Gruß,
Carsten
Sub username()
Dim X As Integer
Y = Cells(Rows.Count, 1).End(xlUp).Offset(0, 1).Row + 1
Sheets("Tabelle1").Visible = True
Sheets("Tabelle1").Cells(Y, 1).Value = Application.username
Sheets("Tabelle1").Cells(Y, 2).Value = Date
Sheets("Tabelle1").Cells(Y, 3).Value = Time
Sheets("Tabelle1").Visible = False
End Sub
Gruß
Willie