是否可以通过VBA检查sharepoint站点上是否存在文件?

时间:2012-11-21 12:55:05

标签: excel sharepoint vba excel-vba hyperlink

我正在尝试编写Excel(2010)宏,在某些时候必须确认公司sharepoint网站上存在某个文件(doc / pdf)。 可以通过Internet Explorer访问该文件(授予用户所有权限)。 我有一个直接链接到该文件。 我不需要打开它,只需检查它是否在那里。

如果这是本地文件,我会使用Dir()来检查文件是否存在。 但是,这不适用于URI。

我通过objHttp尝试了一种基于GET的方法,但我收到的唯一响应是一个wepage,声明“我无权查看此页面”[在标签中]。

这是否可行?

2 个答案:

答案 0 :(得分:2)

试一试:

Function checkFile(URLStr As String) As Boolean
    Dim oHttpRequest As Object
    Set oHttpRequest = New MSXML2.XMLHTTP60
    With oHttpRequest
        .Open "GET", URLStr, False, [Username], [Password]
        .setRequestHeader "Cache-Control", "no-cache"
        .setRequestHeader "Pragma", "no-cache"
        .setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
        .send
    End With
    If oHttpRequest.Status = 200 Then
        checkFile = True
    Else
        checkFile = False
    End If
End Function

URLStr应该类似于“http://sharepoint/site/user.xlsx”。在.Open行中输入您的用户名/密码以将其传递到站点,这应该适用于任何URI(例如我针对.xlsx文件测试它)。我应该指出,在我的内部SharePoint站点上,我不需要传递UN / PW来运行此功能,因此如果最终出现这种情况,只需从{{1}中删除这些参数即可。打电话。此外,所有标题内容可能都没有必要,但我总是在我的请求中使用它们,所以我把它们留在了。

答案 1 :(得分:-1)

我不知道这可能对你有帮助吗?但我正在向你分享我的想法。 您可以使用http Web请求。如下例所示:

public void CheckWebFileExist()

{

try

{

    WebClient client = new WebClient();

    client.Credentials = CredentialCache.DefaultCredentials;



    // Create a request for the URL.         

    WebRequest request = WebRequest.Create("myAddress");



    // If required by the server, set the credentials.

    request.Credentials = CredentialCache.DefaultCredentials;



    // Get the response.

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();



    //check response status

    if (string.Compare(response.StatusDescription, "OK", true) == 0)

    {

        //URL exists so that means file exists

    }

    else

    {

        //URL does not exist so that means file does not exist

    }      
}
catch (Exception error)

{

    //error catching

}
}

请告诉我这是否对您有所帮助?