Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1016to1020
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
Inhaltsverzeichnis

Log-Datei mit Nutzungsdauer

Log-Datei mit Nutzungsdauer
21.10.2008 09:31:00
Thomas
Hallo,
ich lasse eine TXT mit jedem Zugriff erstellen, diese gibt mir das Datum, die uhrzeit und den benutzer an, welcher auf die datei zugegriffen hat.
Dies erledige ich per folgenden Code

Sub InTextdatei()
Dim sTxt As String
Dim name As String
Dim vorname As String
Dim nachname As String
Dim PCName As String
Dim Zeit As String
Dim User As String
name = Environ(16)
User = Environ(45)
PCName = Environ(21)
Zeit = Now
On Error GoTo ERRORHANDLER
If InStr(name, "=") Then
name = Right(name, Len(name) - InStr(name, "="))
vorname = Left(name, InStr(name, " "))
nachname = Right(name, Len(name) - InStr(name, " ") + 1)
End If
Open "\\XXX\XXX\Statistik\log08.txt" For Append As #1
sTxt = User & ";" & PCName & ";" & Now & ";" & name
sTxt = Now & ";" & Environ("Username") & ";" & Application.UserName
Print #1, sTxt
Close
Exit Sub
ERRORHANDLER:
MsgBox "Textdatei konnte nicht erstellt werden!"
End Sub


Wie kann ich den Code so verändern das dieser mir auch die Auslogzeit anzeigt, sodass nicht nur nachvollziehbar ist wer wann die Datei geöffnet hat, sondern auch wie lange diese durch den Benutzer geöffnet war.
Vielen Dank an alle Helfer.
MfG aus Berlin
Tom

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Log-Datei mit Nutzungsdauer
21.10.2008 10:14:00
Harald
Hallo Tom,
probier's mal mit Workbookbeforeclose
-------------------------------------------------------
BeforeClose-Ereignis
Siehe auchBetrifftBeispielBesonderheitenTritt ein, bevor die Arbeitsmappe geschlossen wird. Wurde die Arbeitsmappe geändert, tritt dieses Ereignis ein, bevor der Benutzer gefragt wird, ob die Änderungen gespeichert werden sollen.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel      False, wenn das Ereignis eintritt. Falls die Ereignisprozedur dieses Argument auf  _
True setzt, wird das Schließen abgebrochen, und die Arbeitsmappe bleibt geöffnet.
Beispiel
In diesem Beispiel wird die Arbeitsmappe immer gespeichert, wenn sie geändert wurde.


Private Sub Workbook_BeforeClose(Cancel as Boolean)
If Me.Saved = False Then Me.Save
End Sub


-------------------------------------------------------
In dieser Routine kannst Du auch die Endezeit in die Textdatei schreiben.
Gruß Harald

Anzeige
AW: Log-Datei mit Nutzungsdauer
21.10.2008 12:12:00
Thomas
Hallo Harald,
vielen Dank für deine Hilfe. Was ich allerdings noch nicht verstehe, wie das eingebunden werden sollte.
Verstehe ich das zudem richtig das bei Speicherungen die Änderungen eingetragen werden? Problem hierbei ist das die Liste vorwiegend als Info dient und zu 99,5% durch mich bearbeitet wird. Das bedeutet das die Liste als Info ja nicht geändert gespeichert wird und somit ja auch keine Protokoliierung stattfindet oder?
MfG aus Berlin
Tom
AW: Log-Datei mit Nutzungsdauer
21.10.2008 12:34:36
Harald
Hallo Tom,
das Beispiel ist aus der Hilfe, passt also nicht direkt auf Deine Frage. Du ersetzt "If Me.Saved = False Then Me.Save" einfach durch eigenen Code, der z.B. die Uhrzeit des Schließens in die Log Datei eintragen kann.
Harald
Anzeige
AW: Log-Datei mit Nutzungsdauer
21.10.2008 13:01:58
Thomas
Hallo Harald,
aber hast Du auch einen Code zum eintragen der Uhrzeit beim schließen? Das ist ja genau der Teil der mir bisher fehlt.
Mit der Anwendung des Beispiels komme ich leider nicht zurecht, Sorry.
Wie kann ich denn das BSP mit der Speicherung jeder Änderung in meinen vorhanden einbauen?
MfG aus Berlin
Tom
AW: Log-Datei mit Nutzungsdauer
21.10.2008 13:06:00
Harald
Ohne Test - geht grad nicht -

Private Sub Workbook_BeforeClose(Cancel as Boolean)  ' hier, und nur hier geändert
Dim sTxt As String
Dim name As String
Dim vorname As String
Dim nachname As String
Dim PCName As String
Dim Zeit As String
Dim User As String
name = Environ(16)
User = Environ(45)
PCName = Environ(21)
Zeit = Now
On Error GoTo ERRORHANDLER
If InStr(name, "=") Then
name = Right(name, Len(name) - InStr(name, "="))
vorname = Left(name, InStr(name, " "))
nachname = Right(name, Len(name) - InStr(name, " ") + 1)
End If
Open "\\XXX\XXX\Statistik\log08.txt" For Append As #1
sTxt = User & ";" & PCName & ";" & Now & ";" & name
sTxt = Now & ";" & Environ("Username") & ";" & Application.UserName
Print #1, sTxt
Close
Exit Sub
ERRORHANDLER:
MsgBox "Textdatei konnte nicht erstellt werden!"
End Sub


Anzeige
AW: Log-Datei mit Nutzungsdauer
21.10.2008 13:15:34
Harald
Noch'n Hinweis:
Den Code gibst Du nicht als Makro ein, sondern klicke mit rechter Maustaste unten auf einen Tabellenreiter, wähle aus dem PopUp "Code anzeigen" aus.
Gehe dann im VBA-Editor, der sich geöffnet hat, in die linke Leiste. Suche dort
VBAProject("Name deiner Mappe".XLS)
- Microsoft Excel Objekte
- Diese Arbeitsmappe <- hier mit linker Maustaste draufklicken
Füge den Code in dem dann erscheinenden Fenster auf. Das Fenster solte beschriftet sein mit:
"Name deiner Mappe".XLS - Diese Arbeitsmappe (Code)
Gruß Harald
AW: Log-Datei mit Nutzungsdauer
21.10.2008 13:51:00
Thomas
Hallo,
Okay das die Zeit beim Beenden eingetragen wird, klappt soweit, bekomme ich das aber irgendwie anders dargestellt hin?
Die Log-Datei gibt nun folgende Werte aus (Auszug):

21.10.2008 13:39:48;ThomasRitter;TR
21.10.2008 13:41:37;ThomasRitter;TR


Der erste gibt die Startzeit aus, die zweite die Endzeit. Kann ich das irgendwie in eine Zeile bringe oder anders deklarieren? Weil so sieht es ja aus als wäre die Datei 2mal geöffnet worden.
Aber schon einmal vielen Dank für die Unterstützung!
MfG aus Berlin
Tom

Anzeige
AW: Log-Datei mit Nutzungsdauer
21.10.2008 13:56:00
Harald

Private Sub Workbook_BeforeClose(Cancel as Boolean)  ' hier, und nur hier geändert
Dim sTxt As String
Dim name As String
Dim vorname As String
Dim nachname As String
Dim PCName As String
Dim Zeit As String
Dim User As String
name = Environ(16)
User = Environ(45)
PCName = Environ(21)
Zeit = Now
On Error GoTo ERRORHANDLER
If InStr(name, "=") Then
name = Right(name, Len(name) - InStr(name, "="))
vorname = Left(name, InStr(name, " "))
nachname = Right(name, Len(name) - InStr(name, " ") + 1)
End If
Open "\\XXX\XXX\Statistik\log08.txt" For Append As #1
sTxt = "Stop: " &User & ";" & PCName & ";" & Now & ";" & name '


Harald

Anzeige
AW: Log-Datei mit Nutzungsdauer
21.10.2008 14:27:33
Gernot
Hi,
dir ist klar, dass das in Deutschland rechtswidrig ist?
mfg Gernot
So lange er sich selbst logggt...
21.10.2008 14:39:00
Harald
Recht, ist es, habe diesmal vergessen, darauf hinzuweisen. Er ist nicht der Erste, der so etwas versucht.
@Tom: Wen Du die Technik mit anderen Anwendern einsetzt, solltest Du vorher deren Zustiimmung einholen und die Log-Datei sicher geschützt vor unauthorisiertem Zugriff ablegen.
Alternativ prüfst Du den Nutzernamen und loggst nur Deine eigenen Zugriffe.
Harald
AW: So lange er sich selbst logggt...
21.10.2008 14:51:20
Thomas
Hallo,
ich denke das geht bei uns in Ordnung. Jedenfalls wissen auch alle bescheid und können mit dieser Liste auch Ihre Arbeit nachweisen, aber danke für den hinweis.
@Harald,
irgendwas will mit dem geänderten Code aber nicht mehr klappen, jedenfalls bekomme ich so überhaupt keine Einträge mehr, eine fehlermeldung bekomme ich allerdings auch nicht.
(Die XXX habe ich natürlich angepasst).
"ist mir langsam peinlich, aber allein bekomme ich das nicht hin"
MfG aus Berlin
Tom
Anzeige
AW: So lange er sich selbst logggt...
21.10.2008 14:54:00
Harald
Du hast ziemlich "schräge" Zeilenumbrüche. Schmeiß mal den ganzen Kommentar weg, alles das:
'<- Hier "Stop: " eingefügt, _
_
_
' Bei der Routine beim Öffnen _
_
'hier "Start: " einfügen
Gruß Harald
AW: So lange er sich selbst logggt...
21.10.2008 15:04:47
Thomas
Hallo,
das dachte ich mir auch schon, habe es aber auch schon entfernt. Habes es jetzt so drin:

Private Sub Workbook_BeforeClose(Cancel As Boolean)  ' hier, und nur hier geändert
Dim sTxt As String
Dim name As String
Dim vorname As String
Dim nachname As String
Dim PCName As String
Dim Zeit As String
Dim User As String
name = Environ(16)
User = Environ(45)
PCName = Environ(21)
Zeit = Now
On Error GoTo ERRORHANDLER
If InStr(name, "=") Then
name = Right(name, Len(name) - InStr(name, "="))
vorname = Left(name, InStr(name, " "))
nachname = Right(name, Len(name) - InStr(name, " ") + 1)
End If
Open "\\1-SERVER\07 Kaufm. Abteilung\Statistik\log08.txt" For Append As #1
sTxt = "Stop: " & User & ";" & PCName & ";" & Now & ";" & name
sTxt = Now & ";" & Environ("Username") & ";" & Application.UserName
Print #1, sTxt
Close
Exit Sub
ERRORHANDLER:
MsgBox "Textdatei konnte nicht erstellt werden!"
End Sub


Trotzdem kommen keine Daten an, aber auch keine fehlermeldungen etc.
MfG aus Berlin
Tom

Anzeige
AW: So lange er sich selbst logggt...
21.10.2008 15:13:55
Harald
Bin ratlos.
Auf jeden Fall ist das aber Quatsch:
sTxt = "Stop: " & User & ";" & PCName & ";" & Now & ";" & name
sTxt = Now & ";" & Environ("Username") & ";" & Application.UserName
Print #1, sTxt
Hier wird nur die 2. Zeile gedruckt (sTxt = Now & ";" & Environ("Username") & ";" & Application.UserName), weil die erste Zeile mit de zweiten Anweisung "sTxT " ..." überschrieben wird. Alos müsste der Code etwa so aussehen:
' sTxt = "Stop: " & User & ";" & PCName & ";" & Now & ";" & name AUSKOMMENTIERT
sTxt = "Stop: " & Now & ";" & Environ("Username") & ";" & Application.UserName
Print #1, sTxt
Harald
Anzeige
AW: So lange er sich selbst logggt...
21.10.2008 15:20:23
Thomas
Hallo Harald,
schade so kurz vor dem Ziel :-)
Vielleicht kann ja noch wer unterstützen?
Vielen Dank für deine Bemühungen, echt spitze.
MfG Tom
AW: So lange er sich selbst logggt...
21.10.2008 18:00:20
Thomas
Hallo nochmal,
ich habes es jetzt wieder so hinbekommen das es protokolliert wird, aber hast du noch eine Idee wie ich das Öffnen und Verlassen unterschiedlich auflisten kann?
Momentan sieht es so aus:

Stop: 21.10.2008 17:51:56;ThomasRitter;TR
Stop: 21.10.2008 17:52:49;ThomasRitter;TR


Das sind die richtigen Zeiten. Schön wäre es aber noch wenn hier nicht bei beiden Stop stehen würde, sondern beim ersten Start und beim 2ten Stop. Das wäre klasse, sodass hier dann leichter ausgewertet werden kann.
Vielen Dank bis hier und MfG aus Berlin
Tom

Anzeige
AW: So lange er sich selbst logggt...
21.10.2008 20:17:36
Andre´
Hallo Tom,
würde Dir nachfolgendes Schema helfen
Start_21.10.2008 17:51:56;ThomasRitter;TR
Ende_21.10.2008 17:52:49;ThomasRitter;TR
MFG Andre
AW: So lange er sich selbst logggt...
21.10.2008 21:00:41
Andre´
Hi Tom,
hier der Code:
Option Explicit

Private Sub Workbook_Open()
Dim sTxt As String
Dim name As String
Dim vorname As String
Dim nachname As String
Dim PCName As String
Dim Zeit As String
Dim User As String
name = Environ(16)
User = Environ(45)
PCName = Environ(21)
Zeit = Now
On Error GoTo ERRORHANDLER
If InStr(name, "=") Then
name = Right(name, Len(name) - InStr(name, "="))
vorname = Left(name, InStr(name, " "))
nachname = Right(name, Len(name) - InStr(name, " ") + 1)
End If
'       Open "\\XXX\XXX\Statistik\log08.txt" For Append As #1
Open "C:\log08.txt" For Append As #1
'       sTxt = User & ";" & PCName & ";" & Now & ";" & name
'       sTxt = Now & ";" & Environ("Username") & ";" & Application.UserName
sTxt = "Start_" & Now & ";" & Environ("Username") & ";" & Application.UserName
Print #1, sTxt
Close
Exit Sub
ERRORHANDLER:
MsgBox "Textdatei konnte nicht erstellt werden!"
End Sub



Private Sub Workbook_BeforeClose(Cancel As Boolean)  ' hier, und nur hier geändert
Dim sTxt As String
Dim name As String
Dim vorname As String
Dim nachname As String
Dim PCName As String
Dim Zeit As String
Dim User As String
name = Environ(16)
User = Environ(45)
PCName = Environ(21)
Zeit = Now
On Error GoTo ERRORHANDLER
If InStr(name, "=") Then
name = Right(name, Len(name) - InStr(name, "="))
vorname = Left(name, InStr(name, " "))
nachname = Right(name, Len(name) - InStr(name, " ") + 1)
End If
'       Open "\\XXX\XXX\Statistik\log08.txt" For Append As #1
Open "C:\log08.txt" For Append As #1
'       sTxt = User & ";" & PCName & ";" & Now & ";" & name
'       sTxt = Now & ";" & Environ("Username") & ";" & Application.UserName
sTxt = "Ende_" & Now & ";" & Environ("Username") & ";" & Application.UserName
Print #1, sTxt
Close
Exit Sub
ERRORHANDLER:
MsgBox "Textdatei konnte nicht erstellt werden!"
End Sub


MFG Andre

DANKE. PERFEKT! owT
22.10.2008 10:48:00
Thomas
owT

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige