跟踪可能无法保存工作簿的工作簿的登录/注销时间

Posted

技术标签:

【中文标题】跟踪可能无法保存工作簿的工作簿的登录/注销时间【英文标题】:Tracking login/logout time of workbook where workbook may not be saved 【发布时间】:2016-07-13 19:43:47 【问题描述】:

我有一个工作簿,用于跟踪登录和注销时的用户和时间。

通过按钮或关闭工作簿触发注销。

有人可能希望将他们已完成的工作保存在工作簿中,但我仍想在我的审核日志中查看他们何时登录和退出。

有没有办法只将数据保存在一张工作表中而不是整个工作簿中?

【问题讨论】:

要么保存工作簿,要么不保存。您只能将一张工作表另存为新工作簿,但我认为这不是您要查找的内容... 最好让您的代码将信息记录到其他地方,例如与工作簿位于同一文件夹中的单独文本文件。 同意@TimWilliams。不过,安全将是我主要关心的问题。有人可以轻松追踪并更改日志。对你来说可能无关紧要,但它可能。 【参考方案1】:

如果你想要的只是一个审计日志,你可以很容易地用一个文本文件来做到这一点。但是,您当前正在记录您的“登录”,可以修改为将其记录到该工作表和另一个 excel 工作簿或上述文本文件中。您显然可以编辑路径以保存到您想要的任何目录。请务必先创建一个 Log.txt(或其他)文件。同样,如果您愿意捕获它们,您可以添加其他变量,我假设您已经在现有代码中拥有这些变量。此代码中的 open 语句不会反映在屏幕上。它会在事件查看器中弹出一个任务,然后将其关闭。

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

【讨论】:

以上是关于跟踪可能无法保存工作簿的工作簿的登录/注销时间的主要内容,如果未能解决你的问题,请参考以下文章

让用户选择保存 Excel 工作簿的位置

尝试将桌面上的工作簿的工作表 2 保存为 CSV

保存工作簿的 vba 例程没有预期的结果

保存工作簿的 vba 脚本覆盖输入的文件名

保存时使用单元格值作为工作簿的文件名

在不保存工作簿的情况下更改 Excel 中的默认另存为位置