【问题标题】:Check if a file/URL exists on Sharepoint Online检查 Sharepoint Online 上是否存在文件/URL
【发布时间】:2020-05-22 21:02:14
【问题描述】:

我正在寻找一种方法来检查 SharePoint Online 上是否存在文件。

我们的本地 Sharepoint 已移至 Sharepoint Online,因为我的代码不起作用。

现有建议不起作用。几周来我一直在寻找解决方案(谷歌),但没有成功。

HTTPRequest 始终返回 .Status="OK".StatusText="200",即使对于 SharePoint 文件夹中不存在的文件也是如此。

下面的代码显示了我迄今为止尝试过的内容(多种组合,但结果始终相同)

Sub Test_WinHTTPRequest()

    Set HttpRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
    With HttpRequest
        .Open "GET", "https://company.sharepoint.com/sites/wt-teams-CServices/WAN%20Fin/FY19-20/test_file.xlsx"
'       .Open "GET", "http://company.sharepoint.com/sites/wt-teams-CServices/WAN%20Fin/FY19-20/test_file123.xlsx"
'       .Open "GET", "http://company.sharepoint.com/sites/wt-teams-CServices/WAN Fin/FY19-20/test_file123.xlsx"
        .Send
        st = .Status
        stt = .StatusText
        rt = .ResponseText
    End With
    Debug.Print rt, st, stt

End Sub

与 MSXML2.XMLHTTP60 对象的情况相同

无论我在 URL 中使用什么文件名,HTTPRequest 总是返回“URL 存在”。 .ResponceText 返回带有一些 HTML 代码的巨大输出,这与我在 URL 中使用的任何文件名完全相同。

在 Internet Explorer 或 Windows 资源管理器中,如果我使用不存在的文件名粘贴 URL,则会按预期返回错误。

【问题讨论】:

    标签: excel vba sharepoint-online


    【解决方案1】:

    您是否考虑过使用 SharePoint REST Api 方法通过服务器相对 url 从文件夹中获取文件?类似:

    https://{site_url}/_api/web/GetFolderByServerRelativeUrl('/Folder Name')/Files('{file_name}')/$value
    

    更多可以满足您需求的请求电话请查看->link

    我希望这会让你走上正轨:)

    【讨论】:

    • 感谢 Adam,但我可能需要更详细的说明如何使用它。第一眼让我对此感到非常困惑。再次感谢。
    • 我可能需要补充一点,打开文件的代码运行良好。但我需要检查几个文件的存在并只打开其中一个。该代码使用标准语法,例如:Workbooks.Open Filename:=URLtoFile
    【解决方案2】:

    这是一个检查URL是否存在的函数......

    Private Function urlExists(url As String) As Boolean ' Reference to Microsoft XML V3 required
        Dim Request As New MSXML2.XMLHTTP30
        On Error Resume Next
        With Request
            .Open "GET", url, False
            .Send
            urlExists = IIf(.Status = 200, True, False)
        End With
    End Function
    

    【讨论】:

    • 它不起作用。这是我尝试过的变体之一。结果是一样的 - 对于任何 URL,包括不存在的文件,它都会返回 ,Status = 200,
    • 啊 - 没有意识到“Sharepoint”和“Sharepoint Online”之间的区别。您可以尝试下载文件并查看是否有错误吗?虽然不是一个理想的解决方案...
    • 不费吹灰之力就可以很好地下载:Workbooks.Open Filename:=URLtoFile 但是我不能打开和关闭超过 10 个文件。最终,如果我找不到解决方案,我会走这条路,但真的不想。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 2011-12-02
    相关资源
    最近更新 更多