2016-07-13 10 views
0

Ich habe eine Arbeitsmappe eingerichtet, die den Benutzer und die Uhrzeit protokolliert, wann Sie sich an- und abgemeldet haben. Die Abmeldung wird sowohl durch eine Schaltfläche als auch durch einfaches Schließen der Arbeitsmappe ausgelöst. Das einzige Problem ist, dass jemand möchte nicht speichern Sie die Arbeit, die sie in der Arbeitsmappe getan haben, aber ich möchte immer noch sehen, wenn sie sich in meinem Audit-Log-in und out. Ich denke, meine eigentliche Frage ist, ob es möglich ist, nur Daten in einem Arbeitsblatt zu speichern und nicht die gesamte Arbeitsmappe? Wenn ja, wie sieht das in VBA aus?Verfolgen der An-/Abmeldezeit der Arbeitsmappe

+0

Speichern Sie die Arbeitsmappe oder nicht. Sie können nur ein Blatt als neue Arbeitsmappe speichern, aber ich nehme an, dass dies nicht das ist, was Sie suchen ... –

+2

Möglicherweise ist es besser, Ihren Code die Informationen woanders zu protokollieren, z. B. zu einer separaten Textdatei Ordner als Arbeitsmappe. –

+0

Vereinbarte mit @TimWilliams. Sicherheit wäre jedoch mein Hauptanliegen. Jemand könnte das Protokoll leicht aufspüren und ändern. Dir egal, aber vielleicht. – Kyle

Antwort

0

Wenn alles, was Sie wollen, ein Audit-Protokoll ist, können Sie das mit einer Textdatei ziemlich leicht tun. Wie auch immer Sie sich gerade anmelden, Ihre "Logins" können geändert werden, um entweder das in das Blatt UND eine andere Excel-Arbeitsmappe oder eine Textdatei wie erwähnt zu protokollieren. Sie können den Pfad zum Speichern natürlich in dem Verzeichnis bearbeiten, das Sie möchten. Stellen Sie sicher, dass Sie zuerst auch eine Log.txt-Datei (oder was auch immer) erstellen. Ebenso können Sie andere Variablen hinzufügen, wenn Sie so geneigt sind, sie zu erfassen, von denen Sie annehmen, dass sie bereits in Ihrem vorhandenen Code vorhanden sind. Die offenen Anweisungen in diesem Code werden nicht auf dem Bildschirm angezeigt. Es öffnet eine Aufgabe in der Ereignisanzeige und schließt sie dann.

Sub LogIn() 
    Dim Path As String 
    Dim TxtLog As String 
    Dim i As Integer 

    i = FreeFile 
    Path = ThisWorkbook.Path & "\Log.txt" 
    Open Path For Input As i 
    TxtLog = Input(LOF(i), i) & vbCr & Now()'read entire log file into string and add new info 
    Close i 'close log.txt for reading to VBA 

    i = FreeFile 

    Open Path For Output As i 'open log.txt to write to it from VBA 
    Print #i, TxtLog 
    Close i 
End Sub