Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Log-File erstellen

Log-File erstellen
20.10.2016 09:40:35
Jens
Hallo,
wie kann ich eine LOG_File in Excel erstellen lassen. Die Logfile sollte exteren über eine TXT-Datei erstellt werden.
Hierzu anbei meine Datei.
https://www.herber.de/bbs/user/108906.xlsx
Wenn wieder einen neuer Log gemacht wird, dann wird dies in der nächsten Zeile der TXT_datei erfasst. Es werden keine Daten überschrieben!
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Log-File erstellen
20.10.2016 10:23:21
UweD
Hallo
meinst du das so?
In ein Modul

Sub Log_erstellen()
Dim TB, Pfad As String, Datei As String
Set TB = Sheets("Tabelle1")
Pfad = "C:\Temp\" & "Log-File\"
If Dir(Pfad, vbDirectory) = "" Then MkDir Pfad
Datei = Pfad & Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".")) _
& "txt"
Close #1
If Dir(Datei) = "" Then
Open Datei For Output As 1
Else
Open Datei For Append As 1
End If
Print #1, Format(Now, "YYYY_MM_DD") & "/" & Format(Now, "hh:mm:ss") & _
"/IN/" & TB.Range("A1")
Close #1
End Sub

in DieseArbeitsmappe

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim TB, Pfad As String, Datei As String
Set TB = Sheets("Tabelle1")
Pfad = "C:\Temp\" & "Log-File\"
Datei = Pfad & Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".")) _
& "txt"
Close #1
If Dir(Datei) = "" Then
MsgBox "Datei: '" & Datei & "' existiert nicht"
Exit Sub
End If
Open Datei For Append As 1
Print #1, Format(Now, "YYYY_MM_DD") & "/" & Format(Now, "hh:mm:ss") _
& "/OUT/" & TB.Range("A1")
Close #1
End Sub

Anzeige
AW: Log-File erstellen
20.10.2016 10:44:50
Jens
Super Danke genau so.
Aber wie bekomme ich es noch hin das der Ordner nicht in Temp angelegt wird sondern im gleichen Ordner in der die Exceldatei gespeichert ist?
AW: Log-File erstellen
20.10.2016 10:49:09
UweD
Ok.
dann tausche ist in...

Pfad = ThisWorkbook.Path & "\Log-File\"
LG UweD
Anzeige
AW: Log-File erstellen
20.10.2016 10:48:43
Jens
Hallo,
habe noch einen Fehler festgestellt.
Wenn ich die Datei aufmache und nicht auf den Button klicke, dann wird trotzdem der Logout angelegt.
Der Logout soll nur dann angelegt werden, wenn ich auch den Login angelegt habe.
Sprich wenn die Datei nur geöffnet wird und der Button nicht betätigt wird, wird auch kein Login und kein Logout angelegt.
Kannst du dies noch setzten. Weil ganz passt es noch nicht zu meinen eigentlichen Anforderungen.
Anzeige
AW: Log-File erstellen
20.10.2016 10:55:45
UweD
Hi
- dann müsste man sich merken, op der Login erfolgte
= Das könnte in einer Zelle passieren (einfach)
= oder eine Zweite (Tmp) Datei wird abgelegt und später wieder gelöscht (mittelmässig)
- oder die letzte Zeile müsste ausgelesen und interpretiert werden
= schwieriger, da nur das Datum sinnvoll wäre
Wie wünschst du es?
Anzeige
AW: Log-File erstellen
20.10.2016 10:57:10
Jens
Hallo,
denke die Zellen Version ist am besten Zelle B1
AW: Log-File erstellen
20.10.2016 11:13:43
UweD
Hallo nochmal
Das geänderte Modul
Sub Log_erstellen()
    Dim TB, Pfad As String, Datei As String
    Set TB = Sheets("Tabelle1")
    Pfad = ThisWorkbook.Path & "\Log-File\"
    If Dir(Pfad, vbDirectory) = "" Then MkDir Pfad
    Datei = Pfad & Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".")) _
        & "txt"
    Close #1
    If Dir(Datei) = "" Then
        Open Datei For Output As 1
    Else
        Open Datei For Append As 1
    End If
    Print #1, Format(Now, "YYYY_MM_DD") & "/" & Format(Now, "hh:mm:ss") & _
        "/IN/" & TB.Range("A1")
    Close #1
    TB.Range("B1") = "Log erfolgt"
End Sub
In DieseArbeitsmappe
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim TB, Pfad As String, Datei As String
    Set TB = Sheets("Tabelle1")
    If TB.Range("B1") = "Log erfolgt" Then
        Pfad = ThisWorkbook.Path & "\Log-File\"
        Datei = Pfad & Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".")) _
            & "txt"
        Close #1
        If Dir(Datei) = "" Then
            MsgBox "Datei: '" & Datei & "' existiert nicht"
            Exit Sub
        End If
        Open Datei For Append As 1
        Print #1, Format(Now, "YYYY_MM_DD") & "/" & Format(Now, "hh:mm:ss") _
            & "/OUT/" & TB.Range("A1")
        Close #1
    End If
    TB.Range("B1").ClearContents
    Me.Save
End Sub


Private Sub Workbook_Open()
    Dim TB
    Set TB = Sheets("Tabelle1")
    TB.Range("B1").ClearContents
End Sub
LG UweD
Anzeige
AW: Log-File erstellen
20.10.2016 11:19:05
Jens
Super besten Dank :) geht
gern geschehen owT
20.10.2016 12:13:21
UweD
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Log-File in Excel erstellen


Schritt-für-Schritt-Anleitung

Um ein Log-File in Excel zu erstellen und dieses in einer externen TXT-Datei zu speichern, kannst du die folgenden Schritte befolgen:

  1. Öffne Excel und erstelle eine neue Arbeitsmappe oder benutze eine bestehende.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf „VBAProject (DeinDateiname)“ klickst und „Einfügen“ > „Modul“ wählst.

  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub Log_erstellen()
       Dim TB As Worksheet, Pfad As String, Datei As String
       Set TB = Sheets("Tabelle1")
       Pfad = ThisWorkbook.Path & "\Log-File\"
       If Dir(Pfad, vbDirectory) = "" Then MkDir Pfad
       Datei = Pfad & Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".")) & "txt"
       Close #1
       If Dir(Datei) = "" Then
           Open Datei For Output As #1
       Else
           Open Datei For Append As #1
       End If
       Print #1, Format(Now, "YYYY_MM_DD") & "/" & Format(Now, "hh:mm:ss") & "/IN/" & TB.Range("A1")
       Close #1
       TB.Range("B1") = "Log erfolgt"
    End Sub
  5. Um den Logout zu protokollieren, füge den folgenden Code in „DieseArbeitsmappe“ ein:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
       Dim TB As Worksheet, Pfad As String, Datei As String
       Set TB = Sheets("Tabelle1")
       If TB.Range("B1") = "Log erfolgt" Then
           Pfad = ThisWorkbook.Path & "\Log-File\"
           Datei = Pfad & Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".")) & "txt"
           Close #1
           If Dir(Datei) = "" Then
               MsgBox "Datei: '" & Datei & "' existiert nicht"
               Exit Sub
           End If
           Open Datei For Append As #1
           Print #1, Format(Now, "YYYY_MM_DD") & "/" & Format(Now, "hh:mm:ss") & "/OUT/" & TB.Range("A1")
           Close #1
       End If
       TB.Range("B1").ClearContents
       Me.Save
    End Sub
  6. Speichere deine Excel-Datei als Makro-fähige Datei (.xlsm).


Häufige Fehler und Lösungen

  • Fehler: Log-Datei wird nicht erstellt.

    • Lösung: Überprüfe, ob der Pfad korrekt ist und ob du Schreibrechte in den angegebenen Ordner hast.
  • Fehler: Log-Datei wird überschrieben.

    • Lösung: Stelle sicher, dass der Code Open Datei For Append As #1 verwendet wird, um die Daten an die bestehende Datei anzufügen.
  • Fehler: Logeinträge werden bei jedem Öffnen der Datei erstellt.

    • Lösung: Achte darauf, dass der Logout nur im Workbook_BeforeClose-Event geschrieben wird, wenn ein Login erfolgt ist (z.B. in Zelle B1).

Alternative Methoden

Eine andere Möglichkeit, ein Log-File in Excel zu erstellen, ist die Verwendung von Excel-Add-Ins oder Drittanbieter-Tools, die speziell für das Logging von Aktivitäten in Excel entwickelt wurden. Diese Tools bieten oft benutzerfreundliche Oberflächen und zusätzliche Funktionen.


Praktische Beispiele

Hier ein Beispiel für einen Log-Eintrag, der in der Datei logfile.txt gespeichert wird:

2023_10_15/14:30:00/IN/Wert aus A1
2023_10_15/14:45:00/OUT/Wert aus A1

Du kannst das Log-File auch so anpassen, dass zusätzliche Informationen, wie Benutzername oder spezifische Aktionen, protokolliert werden.


Tipps für Profis

  • Überlege, ob du die Logs in einer Datenbank speichern möchtest, anstatt sie in einer TXT-Datei zu halten. Dies ermöglicht eine bessere Suche und Analyse der Log-Daten.
  • Implementiere eine Fehlerbehandlung im VBA-Code, um unerwartete Fehler abzufangen und zu protokollieren.

FAQ: Häufige Fragen

1. Wie kann ich die Log-Datei an einem anderen Ort speichern? Du kannst den Pfad im VBA-Code anpassen, indem du die Zeile Pfad = ThisWorkbook.Path & "\Log-File\" änderst.

2. Kann ich die Log-Datei in ein Excel-Dokument importieren? Ja, du kannst die Daten aus der TXT-Datei mit der Funktion „Daten importieren“ in Excel einfügen oder den VBA-Code anpassen, um die Log-Daten direkt in ein Excel-Dokument zu schreiben.

3. Wie kann ich die Log-Datei regelmäßig sichern? Du kannst einen weiteren VBA-Code schreiben, der die Log-Datei zu einem bestimmten Zeitpunkt oder bei einer bestimmten Aktion in einen anderen Ordner kopiert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige