Первое сообщение здесь, я приношу свои извинения, если у меня нет каких-либо рекомендаций.Обнаружить, если файл SharePoint открыт
Вот мой вызов: у меня есть файл отслеживания состояния, который сохраняется в SharePoint. Макрос откроет этот статус-трекер, запишет некоторую информацию, сохранит и закроет файл. Я пытаюсь включить некоторый код, чтобы определить, будет ли другой пользователь открывать этот файл статуса, иначе макрос взорвется, когда он увидит, что он не может сохранить изменения. Я знаю, что это не очень элегантная система, но сейчас это будет сделано!
Приведенный ниже код работает при обнаружении открытия файла, но только для локальных файлов (например, для диска C: \). Я не могу заставить его работать для файлов, сохраненных в SharePoint. Я знаю, что мой путь к файлу SharePoint верен, я могу открыть файл, используя операцию «Workbooks.Open». Когда я пытаюсь запустить код для файла SharePoint, он всегда возвращает, что файл НЕ открыт другим пользователем, даже если он есть.
Я бы предпочел не использовать функцию «Отказано» SharePoint и отключить ее. Моя команда не очень добросовестна в проверке вещей.
Большое спасибо!
'**********Function to check if workbook is open**********
Function IsWorkBookOpen(strFileName As String)
On Error Resume Next
' If the file is already opened by another process,
' and the specified type of access is not allowed,
' the Open operation fails and an error occurs.
Open strFileName For Binary Access Read Write Lock Read Write As #1
Close #1
'If no error, file is not open.
If Err.Number = 0 Then
IsWorkBookOpen = False
End If
'Error #70 is another user has the file open in edit mode.
If Err.Number = 70 Then
IsWorkBookOpen = True
End If
'Error #75 is another user has the file open in read only mode.
If Err.Number = 75 Then
IsWorkBookOpen = False
End If
End Function
'**********Running the actual code**********
Sub Button1_Click()
'Go into Status Sheet if it's not open. Otherwise skip it.
If IsWorkBookOpen("\\source.yadda.com\Top_Secret_File_Path\BCR Status Sheet.xlsm") Then
MsgBox ("'BCR Status Sheet.xlsm' is open.")
Else: MsgBox ("Open it up, do a bunch of stuff.")
End If
Workbooks.Open ("\\source.yadda.com\Top_Secret_File_Path\BCR Status Sheet.xlsm")
MsgBox ("Cruzin' along with rest of macro.")
End Sub
Любые идеи люди? Что я могу прояснить? –
http://stackoverflow.com/questions/9373082/detect-whether-excel-workbook-is-already-open – R3uK