Подскажите как решить вопрос:
Есть сетевой xls файл, если кто-то его открывает первым на запись, то при открытии ручками этого файла появляется окно с сообщением, что данный файл открыт пользователем "XXX", открыть файл только для чтения?
1. Как можно программно до открытия этого файла узнать что он уже занят другим пользователем? (вопрос минимума)
2. Как узнать кто держит этот файл? (вопрос максимума)
Вопросы актуальны для xls файла, но если есть универсальное решение, скажем еще и для текстовых, буду очень признателен.
Что смог накопать с сделать сам:
Только функцию для проверки занят ли файл. перед вызовом функции в параметр передавать проверенный (существующий) путь к файлу
- Код: Выделить всё
Function file_read_only(strPath As String) As Boolean
On Error GoTo err
Dim fso As New FileSystemObject
'If fso.FileExists(strPath) = True Then 'файл существует
Call fso.MoveFile(strPath, strPath) ' Пробуем переименовать в себя, если ошибка, то файл уже открыт кем-то с доступом на запись
file_read_only = False 'Файл доступен для чтения
'End If
Exit Function
err:
file_read_only = True ' Файл кем-то открыт
End Function
Необходимо определить пользователя который открыл файл, чтобы выслать ему сообщение о немедленном закрытии файла.
Думаю, что закрыть файл на стороне того пользователя это очень большая и кропотливая работа, поэтому ограничюсь сообщением.