如果文件存在于SharePoint站点上,是否可以通过VBA进行检查?

我试图写一个Excel(2010)的macros,在某些时候将不得不确认存在某个文件(doc / pdf)在公司的SharePoint站点上。 该文件可通过Internet Explorer访问(所有权限授予用户)。 我有一个直接链接到该文件。 我不需要打开它,只要检查它是否在那里。

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

我尝试了一个基于GET方法通过objHttp,但我收到的唯一的答复是一个wepage,说明“我无权查看此页”[标签]。

这是可行的吗?

给这个镜头:

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行input您的用户名/密码,将它们传递给站点,这应该适用于任何URI(例如,我正在testing它对.xlsx文件)。 我应该指出,在我的内部SharePoint站点上,我不需要传递UN / PW来运行此function,所以如果最终出现这种情况,只需从.Open调用中删除这些参数即可。 另外,所有标题的东西可能是没有必要的,但我总是有他们在我的要求,所以我把他们放进去。

我不知道这可以帮助你吗? 但是我正在和你分享我的想法。 你可以使用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 } } 

让我知道这是否帮助你?