vb. net Файл проверки общего ресурса Office365, открытый пользователем - PullRequest
2 голосов
/ 10 марта 2020

У меня есть следующий скрипт для доступа к файлу Excel из Office365 Sharepoint.

dim objApp2 As Excel.Application
dim objBook2 As Excel._Workbook
dim objBooks2 As Excel.Workbooks
dim objSheets2 As Excel.Sheets
dim objSheet2 As Excel._Worksheet

link="sharepointlink"
objApp2 = New Excel.Application()
objBooks2 = objApp2.Workbooks
objBook2 = objBooks2.Open(link, [ReadOnly]:=False)
objSheets2 = objBook2.Worksheets
ws2 = objSheets2("Data")
Dim valoare As Integer
valoare = Int(ws2.Range("a1").Value)
ws2.Range("a1").Value = valoare + 1
objBook2.SaveAs()
objBook2.Close(False)

У меня проблема: если кто-то заходит на мою ссылку и открывает файл, либо на Sharepoint, либо при локальном открытии, я получаю сообщение об ошибке при попытке закрыть объект или сохранить файл.

Как я могу проверить, открыт ли кто-то файл при попытке сохранить файл или есть другой способ доступа к файлу?

1 Ответ

2 голосов
/ 10 марта 2020

Добро пожаловать на сайт. Свойство ReadOnly должно сообщать вам, если оно открыто другим лицом, особенно если вы сказали, что хотите, чтобы оно НЕ было. В конечном итоге вам может потребоваться переключиться на общую книгу, но это должно сработать.

dim objApp2 As Excel.Application
dim objBook2 As Excel._Workbook
dim objBooks2 As Excel.Workbooks
dim objSheets2 As Excel.Sheets
dim objSheet2 As Excel._Worksheet

link="sharepointlink"
If IsFileInUse(link) then
        MsgBox "Cannot update Excel file"
        Exit Sub 'End
End If
objApp2 = New Excel.Application()
objBooks2 = objApp2.Workbooks
objBook2 = objBooks2.Open(link, [ReadOnly]:=False)
objSheets2 = objBook2.Worksheets
ws2 = objSheets2("Data")
Dim valoare As Integer
valoare = Int(ws2.Range("a1").Value)
ws2.Range("a1").Value = valoare + 1
objBook2.SaveAs()
objBook2.Close(False)



Public Function IsFileInUse(sFile As String) As Boolean
    Try
        Using f As New IO.FileStream(sFile, FileMode.Open, FileAccess.ReadWrite, FileShare.None)
        End Using
    Catch Ex As Exception
        Return True
    End Try
    Return False
End Function
...