如何使用VBA“locking文件进行编辑”

我正在编写一个会计程序,许多人将在networking上使用。 该程序从networking访问文件,这些文件可以由任何用户编辑。 编辑的工作方式是将文件导入到程序中,允许用户进行更改,然后打开原始文件并用更改后的数据replace旧数据。

问题是,如果两个人导入相同的文件并进行更改,保存更改的第二个人将覆盖第一个人的更改。

我意识到,我可以让程序在编辑时在后台打开文件,这会locking它以供第二个用户编辑。 我只是紧张,打开文件将被损坏。 有没有办法让用户使用VBA来locking文件进行编辑而不用实际打开文件。 那就是我现在只会replace数据。

我不认为我很清楚,但任何帮助将不胜感激。

此代码:

  • 使用SetAttrstrFile下指定的文件设置为readony
  • 首先检查文件是否已经打开( 检测Excel工作簿是否已经打开 )

 Option Explicit Sub SetAttribue() Dim strFile As String strFile = "c:\temp\test.xlsx" If Not IsWorkBookOpen(strFile) Then SetAttr strFile, vbReadOnly MsgBox "file now readonly" Else MsgBox "File is already open" End If End Sub 

检查子

 Function IsWorkBookOpen(FileName As String) As Boolean Dim ff As Long Dim ErrNo As Long On Error Resume Next ff = FreeFile() Open FileName For Input Lock Read As #ff Close ff ErrNo = Err On Error GoTo 0 Select Case ErrNo Case 0: IsWorkBookOpen = False Case 70: IsWorkBookOpen = True Case Else: Error ErrNo End Select End Function