我有一个Excel文件,作为vba中的几个功能。其中之一是在某些方面节省了一些背景。就此而言,文件必须能够写入,换句话说,如果它作为只读文件打开,它就不能也不应该起作用。
因此我的问题是:我可以以及如何控制只读(或通知)警报消息,以便一旦打开文件,它就可以警告(msgbox或表单)文件被打开,但是防止进一步(比如完全打开只读)?
有一些例子说明如何从另一个文件中检查文件是否被打开。这种情况下,如果打开文件必须检查它自己,我怀疑它会在循环中呈现它。如果文件仍然可以首先检索打开文件的用户(如原始警告),那就太棒了。
谢谢!
答案 0 :(得分:2)
您可以检查Workbook_Open()
事件,如下所示:
Private Sub Workbook_Open()
If ThisWorkbook.ReadOnly = True Then
MsgBox "File in use by: " & CreateObject("ADsSecurityUtility").GetSecurityDescriptor(ThisWorkbook.FullName, 1, 1).Owner & _
vbCrLf & vbCrLf & _
"Please re-open this workbook when available for write access.", vbOkOnly + vbInformation, "File Locked"
ThisWorkbook.Close SaveChanges:=False '// close if read only
End If
End Sub