あるExcelファイルにvbaを仕込みます。
Excelファイルオープン時にテキストファイルを生成して
WshNetworkオブジェクトを利用して、コンピュータのユーザー名を書き込みます。
読み取り専用であれば、テキストファイルからユーザー名を取得すればよいです。
ファイルを閉じる時にテキストファイルは削除します。
該当Excelファイルをマクロを有効にして開かなければならないので、
ユーザーが意識しなくてもマクロを有効で開くようにvbscriptを利用してExcelを開いてもらっています。
強制的に「マクロ有効」で開かせる。
Private Sub Workbook_Open()
Dim Path As String
Path = ThisWorkbook.Path & "\user.txt"
If Not ActiveWorkbook.ReadOnly Then '読み取り専用でない場合
Dim objNetWork As Object
Set objNetWork = CreateObject("WScript.Network")
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
With FSO.CreateTextFile(Path)
.WriteLine objNetWork.UserName
.Close
End With
Set objNetWork = Nothing
Set FSO = Nothing
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'***********************************************
' ファイルを閉じる際テキストファイル削除
'
'***********************************************
Dim Path As String
Path = ThisWorkbook.Path & "\user.txt"
If Not ActiveWorkbook.ReadOnly And Dir(Path) <> "" Then
Kill Path
End If
End Sub
'読み取り専用の場合
Dim Path As String
Path = ThisWorkbook.Path & "\user.txt"
If Dir(Path) <> "" Then
Open Path For Input As #1
Dim buf As String
Line Input #1, buf
MsgBox "ユーザー:" & buf & "が使用中"
Close #1
End If