信息化 频道

多人共用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
相关文章