Как «заблокировать файл для редактирования» с помощью VBA

Я пишу бухгалтерскую программу, которую многие люди будут использовать в сети. Программа осуществляет доступ к файлам из сети, и эти файлы могут быть отредактированы любым пользователем. Редактирование работает, импортируя файл в программу, позволяя пользователю вносить изменения, а затем открывать исходный файл и заменять старые данные на измененные данные.

Проблема в том, что если два человека импортируют один и тот же файл, и оба делают изменения, второй человек, который сохранит изменения, перезаписывает изменения первого лица.

Я понимаю, что у меня есть возможность открыть файл в фоновом режиме во время его редактирования, который заблокировал его для редактирования вторым пользователем. Я просто нервничаю, что файл будет поврежден, открыв его. Есть ли способ для пользователя заблокировать файл для редактирования без фактического открытия файла, используя VBA. Это я только открою, пока я заменю данные.

Я не думаю, что я был очень ясен, но любая помощь была бы высоко оценена.

Этот код:

  • использует SetAttr для установки файла, указанного в strFile как 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 
Давайте будем гением компьютера.