Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在Excel中跟踪共享驱动器用户名和打开时间?_Vba_Excel_Macros - Fatal编程技术网

Vba 在Excel中跟踪共享驱动器用户名和打开时间?

Vba 在Excel中跟踪共享驱动器用户名和打开时间?,vba,excel,macros,Vba,Excel,Macros,我发现了一篇关于我的问题的类似文章,如下所述 然而,我确实喜欢评论的最后一栏>> “您还可以在下一列中添加时间戳,以显示电子表格的使用时间” 我的问题是>有人可以指导我可能的步骤,或者让我复制代码来完成这项工作吗?如何在没有人注意的情况下隐藏工作表? 我的关键是,非常重要的是,所有的事情都必须安静地进行,没有其他人(sharedrive中的其他用户)可以发现我正在跟踪它。原因是,我已经做了很多研究工作表,我没有时间/不可能让每一张excel工作表都完美,我需要对它们进行优先排序,以便通过知道哪

我发现了一篇关于我的问题的类似文章,如下所述

然而,我确实喜欢评论的最后一栏>> “您还可以在下一列中添加时间戳,以显示电子表格的使用时间”

我的问题是>有人可以指导我可能的步骤,或者让我复制代码来完成这项工作吗?如何在没有人注意的情况下隐藏工作表? 我的关键是,非常重要的是,所有的事情都必须安静地进行,没有其他人(sharedrive中的其他用户)可以发现我正在跟踪它。原因是,我已经做了很多研究工作表,我没有时间/不可能让每一张excel工作表都完美,我需要对它们进行优先排序,以便通过知道哪一张对人们更重要来提高我的时间效率


非常感谢~

在Excel的“审阅”选项卡下,有“跟踪更改”。这应该是你想要的一切

如果希望VBA脚本执行此操作,请尝试以下代码示例之一

Private Sub Worksheet_Change(ByVal Target As Range)
Set t = Target
Set a = Range("A:A")
If Intersect(t, a) Is Nothing Then Exit Sub
Application.EnableEvents = False
t.Offset(0, 7).Value = Environ("username")
Application.EnableEvents = True
End Sub


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim V As Long
Application.EnableEvents = False

Set rng1 = Application.Union(Range("a1:g1"), Range("H:iv"))
Set rng = Application.Intersect(Target, rng1)
If Not rng Is Nothing Then Exit Sub

V = Target.Offset(0, 12).Value
If Target.Offset(0, 12) = "" Then
    With Range("H" & Target.Row)
       .Value = Target.Address & ": first entry by " & Application.UserName & " at " & Now()
       .ColumnWidth = 60
       .Interior.ColorIndex = 33
    End With
    Target.Offset(0, 12).Value = Target.Value
    Application.EnableEvents = True
    Exit Sub
End If
Target.Offset(0, 12).Value = Target.Value
With Range("H" & Target.Row)
  .Value = Target.Address & " changed from " & V & " to " & Target.Value & " by " & Application.UserName & " at " & Now()
   .ColumnWidth = 60
  .Interior.Color = vbYellow
End With
Application.EnableEvents = True
End Sub


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
        With Target
            If .Count > 1 Then Exit Sub
            If Not Intersect(Range("A2:A10"), .Cells) Is Nothing Then
                Application.EnableEvents = False
                Sheets("Sheet2").Select
                If IsEmpty(.Value) Then
                    .Offset(0, 1).ClearContents
                Else
                    With .Offset(0, 1)
                        .NumberFormat = "dd mmm yyyy hh:mm:ss"
                        .Value = Now
                    End With
                End If
                Sheets("Sheet1").Select
                Application.EnableEvents = True
            End If
        End With
End Sub

所有这些“工作表更改”脚本都是工作表事件。您需要右键单击工作表并单击“查看代码”,然后将脚本粘贴到打开的窗口中。一次尝试一个,而不是全部三个。

另外,遵循本文中所述的excel编码marcos“我如何跟踪谁使用我的Excel电子表格?”Excel文件打开时自动发送电子邮件功能>我可以在编码中设置一些内容,使其在我打开时停止发送电子邮件吗?谢谢首先我想指出的是,没有必要对你自己的帖子发表评论。您可以
编辑您的帖子并将其更改以修改上述评论。之后,您可以使用旁边的小
x
删除上述注释。关于你的上述职位,我想建议你不要在Excel中尝试。Excel中没有(有限且容易克服的)安全性。如果您想/必须跟踪他们的行为,那么我建议将Excel文件连接到SQL Server并在那里进行跟踪。无论您在Excel中做什么,都无法有效隐藏。