多人共用Excel的两种解决办法
直接检测文档的打开属性
如果我们不希望使用Share Workbook 方式,还可以直接在用户使用代码调用Excel文档之前设置一个Checkpoint 来提前检测该文档是否已经被打开。但使用这种方式,需要注意:如果一个用户已经打开了所要操作的文档,代码就会自动为当前运行代码的用户打开一个副本文件。然后,会透过代码来检测该文档的Read-only Properties。如果返回值为真,则说明该文档已经被打开,则需要设定一个提示框,通知当前用户该文档已经被打开,用户可以做出选择来决定是否继续操作,或者关闭该副本文件;如果返回值为假,则没有任何提示,文档原件被自动打开,说明当前用户是唯一一位操作该文档的用户,即可正常使用该文档。这种解决办法实现步骤如下:
Private Sub Form_Load()
Dim lngJaNei As Long
Dim mxl As Excel.Application
Dim wb As Excel.Workbook
Dim strVar As String
Dim strFilnavnBane As String
Dim strBane As String
Dim strFilNavn As String
On Error GoTo Feil51
strFilNavn = "Venteliste.xls"
strBane = CurDir
strFilnavnBane = "\\UNCPatch" & "\" & strFilNavn
Set mxl = CreateObject("Excel.application")
mxl.Visible = True
strVar = Dir(strFilnavnBane)
If strVar = "" Then
MsgBox "Finner ikke ventelisten: " & strFilnavnBane
Exit Sub
End If
mxl.Workbooks.Open FileName:=strFilnavnBane ', UpdateLinks:=0, ReadOnly:=0, notify:=True
If mxl.Workbooks.Application.ActiveWorkbook.ReadOnly = True Then
GoTo Feil51
Else
On Error Resume Next
mxl.Activate
mxl.ActiveWorkbook.Sheets(1).Range("A4") = 66
MsgBox "Filen is open"
App.OleServerBusyRaiseError = True
End If
End
Exit Sub
Feil51:
lngJaNei = MsgBox("The file has been opened by another users, do you want to continue or close it? " , vbYesNo)
If lngJaNei = vbYes Then
On Error Resume Next
Else
mxl.Workbooks(strFilNavn).Close True
MsgBox "File is closed"
End If
End Sub
0
相关文章