简体   繁体   English

vb.net Office365 共享点检查文件由用户打开

[英]vb.net Office365 sharepoint check file open by user

I have the following script to access an excel file from office365 Sharepoint.我有以下脚本可以从 office365 Sharepoint 访问 excel 文件。

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)

I have a problem: If someone accesses my link and opens the file, either on Sharepoint or opened locally, I get an error when trying to close the object or save the file.我有一个问题:如果有人访问我的链接并打开文件,无论是在 Sharepoint 上还是在本地打开,我在尝试关闭对象或保存文件时都会收到错误消息。

How can I check if the file is opened by someone when I try to save, or is there another way to access the file?当我尝试保存时,如何检查文件是否被某人打开,或者是否有其他方法可以访问该文件?

Welcome to the site.欢迎来到本站。 The ReadOnly property should tell you if another person has it open, especially when you said you want it NOT to be. ReadOnly 属性应该告诉你是否有其他人打开它,尤其是当你说你不希望它被打开时。 You may ultimately need to switch to a shared workbook, but this should do the trick.您最终可能需要切换到共享工作簿,但这应该可以解决问题。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM