2016-06-01 14 views
2

私は以下に述べるように私の質問について同様の記事を見つけました。共有ドライブのトラッキングExcelのユーザー名と営業時間は?

How do I track who uses my Excel spreadsheet?

しかし、私はコメントの最後coloumn好きです>> >

私の質問は、「あなたはまた、スプレッドシートを使用した場合を示すために次の列にタイムスタンプを入れることができます」誰も私に可能なステップを導くことができますか、私はこれを行うためのコードをコピーさせてください?誰も気付かずにワークシートを非表示にする方法は? 私の鍵は、非常に重要なことですが、他の誰も(共有ドライブの他のユーザーが)私がそれを追跡して見つけ出すことができないように、すべてが静かに行われなければなりません。理由は、私は研究ワークシートをたくさん作っているし、時間がない/すべてのワークシートを完璧にすることは不可能だから、私は時間の効率的なものを優先する必要がある。 。

多くの感謝〜!!

+0

また、「Excelスプレッドシートの使用者を追跡するにはどうすればよいですか? Excelファイルが開いているときに電子メール機能を自動的に送信する>コードを設定して電子メールの送信を停止することができますか?thanksssss – user6407570

+0

最初に私はあなたにコメントする必要はありませんあなたの投稿を編集して上記のコメントを修正することができます。その後、その上の小さな 'x'を使用して上記のコメントを削除することができます。上記の投稿に関して、私はあなたに助言したいと思いますExcelでその試みをしないようにしてください。Excelにはセキュリティが限定されており、容易に克服することはできませんが、その行為を追跡する必要がある場合は、ExcelファイルをSQL Serverに接続し、あなたがExcelで何をしているのかを、効果的に隠すことはできません。 – Ralph

答えて

0

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 

これらの 'Worksheet_Change'スクリプトはすべてワークシートイベントです。シートを右クリックして[コードの表示]をクリックし、開いているウィンドウにスクリプトを貼り付ける必要があります。一度に1つずつ試してみてください。

関連する問題