我正在尝试编写Excel(2010)宏,在某些时候必须确认公司sharepoint网站上存在某个文件(doc / pdf)。 可以通过Internet Explorer访问该文件(授予用户所有权限)。 我有一个直接链接到该文件。 我不需要打开它,只需检查它是否在那里。
如果这是本地文件,我会使用Dir()来检查文件是否存在。 但是,这不适用于URI。
我通过objHttp尝试了一种基于GET的方法,但我收到的唯一响应是一个wepage,声明“我无权查看此页面”[在标签中]。
这是否可行?
答案 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
}
}
请告诉我这是否对您有所帮助?