我正在Office 365 OneDrive中保存的PowerPoint中编写一些VBA,它正在打开Excel工作簿。这是示例代码:
Sub TestOpen()
Dim FilePath As String
FilePath = "https://mytenant-my.sharepoint.com/personal/user_name_mytenant_com/Documents/Workbook.xlsx"
Dim ExcelApp As New Excel.Application
Dim ExcelWorkbook As Excel.Workbook
Set ExcelWorkbook = ExcelApp.Workbooks.Open(FilePath, UpdateLinks:=False, ReadOnly:=True)
MsgBox "Workbook opened and contains " & ExcelWorkbook.Sheets.Count & " sheets", vbInformation
ExcelWorkbook.Close False
Set ExcelWorkbook = Nothing
ExcelApp.Quit
Set ExcelApp = Nothing
End Sub
这很好用。
但是,如果该文件不存在,ExcelApp.Workbooks.Open
调用将挂起。您可以通过结束生成的excel.exe任务来获得控制权,此时会抛出错误。
我怀疑如果文件存在,可以做很多事情来使Open方法返回 - 可能会显示一个用户看不到的提示。
解决此问题的另一种方法是在尝试Open方法之前查看文档是否至少存在。另一个问题是如何从VBA测试OneDrive中是否存在文件?我正在考虑网络请求,因为这是通过HTTP完成的,但不知道要发起什么请求?
更新:
我只是在Excel中运行类似的代码,因为它允许人们看到任何错误消息,它确实会引发无法解决的错误:
是的,我的问题是如何在尝试打开OneDrive之前检查文档是否存在。