Anzeige
Archiv - Navigation
936to940
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
936to940
936to940
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

User-Log-Datei ?

User-Log-Datei ?
04.01.2008 16:20:37
Selma
Hallo Leute,
ich habe ein paar Fragen. Besteht die Möglichkeit unten aufgeführten Code so zu ändern, dass...
a) die vorhandenen Log-Daten nicht überschrieben werden.
b) die neuste Log-Einträge ganz oben stehen.
c) die Log-Datei erstellt wird, falls sie nicht existiert.

Private Sub Workbook_Open()
With Workbook
Open "C:\ViewExcelLog.txt" For Output As #1
Print #1, Format(Now, "YYYY-MM-DD hh:mm:ss") & vbTab & Environ("Username") & vbTab &  _
Environ("COMPUTERNAME")
Close #1
End With
End Sub


Vielen Dank im Voraus.
Liebe Grüße,
Selma

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: User-Log-Datei ?
04.01.2008 16:24:19
Jan
Hi,
1. nimm for Append statt for Output
2. nein
3. Aus der Hilfe:
Wenn die durch Pfadname angegebene Datei nicht existiert, wird sie angelegt, sobald eine Datei im Modus Append, Binary, Output oder Random geöffnet wird.
mfg Jan

AW: User-Log-Datei ?
04.01.2008 16:48:00
Ulf
Hallo Selma
zu Punkt 2 würde ich die Text Datei erst einlesen und dann wieder ausgeben.

Private Sub Workbook_Open()
Dim log(), x As Integer, T
ReDim log(0)
Close
If Dir("C:\ViewExcelLog.txt")  "" Then
Open "C:\ViewExcelLog.txt" For Input As #1
Do While Not EOF(1) ' Schleife bis Dateiende.
Line Input #1, T
x = x + 1
ReDim Preserve log(x)
log(x) = T
Loop
Close #1
End If
Open "C:\ViewExcelLog.txt" For Output As #1
For x = UBound(log) To 1 Step -1
Print #1, log(x)
Next x
Print #1, Format(Now, "YYYY-MM-DD hh:mm:ss") & vbTab & Environ("Username") & vbTab &  _
Environ("COMPUTERNAME")
Close #1
End Sub


mfg Ulf

Anzeige
AW: Korrektur
04.01.2008 16:50:39
Ulf
Hi

Private Sub Workbook_Open()
Dim log(), x As Integer, T
ReDim log(0)
Close
If Dir("C:\ViewExcelLog.txt")  "" Then
Open "C:\ViewExcelLog.txt" For Input As #1
Do While Not EOF(1) ' Schleife bis Dateiende.
Line Input #1, T
x = x + 1
ReDim Preserve log(x)
log(x) = T
Loop
Close #1
End If
Open "C:\ViewExcelLog.txt" For Output As #1
Print #1, Format(Now, "YYYY-MM-DD hh:mm:ss") & vbTab & Environ("Username") & vbTab & Environ( _
"COMPUTERNAME")
For x = UBound(log) To 1 Step -1
Print #1, log(x)
Next x
Close #1
End Sub


mfg Ulf

Anzeige
AW: User-Log-Datei ?
04.01.2008 16:57:17
Matthias
Hallo,
ein ähnlicher Ansatz wie Ulf, nur ohne Zwischenspeichern der Datei in ein Array:

Private Sub Workbook_Open()
Const LogName = "C:\ViewExcelLog.txt"
Const LogNameTemp = "C:\ViewExcelLog_temp.txt"
Dim f1 As Integer, f2 As Integer
Dim zeileNeu As String, zeile As String
With ThisWorkbook
zeileNeu = Format(Now, "YYYY-MM-DD hh:mm:ss") & vbTab & Environ("Username") & vbTab & _
Environ("COMPUTERNAME")
f1 = FreeFile
Open LogNameTemp For Output As #f1
Print #1, zeileNeu
f2 = FreeFile
If Dir(LogName)  "" Then
Open LogName For Input As #f2
Do While Not EOF(f2)
Line Input #f2, zeile
Print #f1, zeile
Loop
Close #f2
Kill LogName
End If
Close #f1
Name LogNameTemp As LogName
End With
End Sub


Je größer die Datei wird, desto länger dauert die Prozedur!
Gruß Matthias

Anzeige
AW: User-Log-Datei ?
04.01.2008 17:33:43
Selma
Hallo zusammen,
erstmal vielen Dank an Alle. Es funktioniert prima.
Lässt sich die Datei auf z.B. 200 Zeilen oder Einträge der letzten 2 Wochen begrenzen?
Liebe Grüße,
Selma

AW: User-Log-Datei ?
04.01.2008 18:53:13
Ulf
Hi
einfach so

Private Sub Workbook_Open()
Dim log(), x As Integer, T
ReDim log(0)
Close
If Dir("C:\ViewExcelLog.txt")  "" Then
Open "C:\ViewExcelLog.txt" For Input As #1
Do While Not EOF(1) And x 


mfg Ulf

AW: User-Log-Datei ?
04.01.2008 22:03:00
Selma
Hallo Ulf,
ich habe das Makro mit "Do While Not EOF(1) And x < 9 ' Schleife bis Dateiende." getestet.
Die Log-Datei sieht so aus:
2008-01-04 21:58:24 Selma Home
2008-01-04 21:57:45 Selma Home
2008-01-04 21:57:32 Selma Home
2008-01-04 21:57:18 Selma Home
2008-01-04 21:57:08 Selma Home
2008-01-04 21:57:13 Selma Home
2008-01-04 21:57:28 Selma Home
2008-01-04 21:57:39 Selma Home
2008-01-04 21:57:50 Selma Home
2008-01-04 21:58:17 Selma Home
Die Sortierung ist durcheinander. Woran liegt das?
LG
Selma

Anzeige
AW: User-Log-Datei anderer Ansatz
05.01.2008 12:11:00
Daniel
Hi
speicher doch die Daten nicht in einem seperaten LogFile sondern in einem versteckten Sheet in der gleichen Datei. Dann kannst du deine Probleme relativ einfach lösen.
über den Usernamen kannst du ja bestimmen, wer das Blatt zu sehen bekommt.

Private Sub Workbook_Open()
Dim shAlt As Worksheet
Set shAlt = ActiveSheet
Application.ScreenUpdating = False
On Error GoTo LogErstellen
Select Case Environ("Username")
Case "DeinUsername" '--- dieser User bekommt das Logfile angezeigt
Sheets("Logfile").Visible = True
Case Else
Sheets("Logfile").Visible = xlVeryHidden
End Select
On Error GoTo 0
With Sheets("Logfile")
.Rows(.Rows.Count).Delete '--- verhindert Überlauf
.Rows(2).Insert CopyOrigin:=xlFormatFromRightOrBelow
.Cells(2, 1).Value = Now
.Cells(2, 2).Value = Environ("Username")
.Cells(2, 3).Value = Environ("Computername")
End With
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Exit Sub
LogErstellen:
Sheets.Add after:=Sheets(ThisWorkbook.Sheets.Count)
ActiveSheet.Name = "LogFile"
ActiveSheet.Visible = xlVeryHidden
With Sheets("LogFile")
.Cells(1, 1).Value = "Zeit"
.Cells(1, 2).Value = "Benutzer"
.Cells(1, 3).Value = "Computer"
.Columns(1).NumberFormat = "YYYY-MM-DD hh:mm"
.Columns(1).ColumnWidth = 15
.Cells(1, 1).Resize(1, 3).Interior.ColorIndex = 15
End With
shAlt.Select
Resume
End Sub


Gruß, Daniel

Anzeige
AW: User-Log-Datei anderer Ansatz
05.01.2008 12:27:00
Selma
Hi Daniel,
die XLS-Datei ist schreibgeschützt. Nur das Lesen ist erlaubt. Wenn die Log-Daten in ein verstecktes Arbeitsblatt geschreiben werden, dann kommt beim Schließen der Datei die Abfrage, ob die Datei gespeichert werden soll.
Die Lösung von Ulf und schon gut, nur das die Log-Daten nicht richtig sortiert (neuste Daten sollen immer oben sein - siehe mein Beitrag davor) sind.
LG
Selma

AW: User-Log-Datei anderer Ansatz
05.01.2008 12:35:51
Matthias
Hallo Selma,
ich glaube nicht, dass Ulfs Code falsch ist, ich denke, dass die in ViewExcelLog.txt bereits vorhandenen Daten unsortiert sind, und diese werden durch den Code ja nicht neu sortiert.
Gruß Matthias

Anzeige
AW: User-Log-Datei anderer Ansatz
05.01.2008 12:42:52
Selma
Hallo Matthias,
die Log-Datei habe ich gelöscht, danach wurde sie automatisch erstellt, da waren keine Daten drin.
Nachdem ich die XLS-Datei ca. 13-Mal geöffnet habe, habe ich die Log-Daten gepostet.
Funktioniert es bei dir?
Liebe Grüße,
Selma

AW: User-Log-Datei anderer Ansatz
05.01.2008 14:18:30
Daniel
Hi
dann nimm als LogFile doch ne andere Excel-Datei, die du per Makro öffnest, die Daten reinschreibst und dan wieder schießt.
da kannst du dann auch ganz einfach die 2. Zeile einfügen und die 202. Zeile löschen (wenn immer nur 200 Zeilen gespeichert werden sollen).
Gruß, Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige