我正在尝试编写一个 Excel (2010) 宏,该宏在某些时候必须确认公司共享点网站上某个文件 (doc/pdf) 的存在。该文件可通过 Internet Explorer 访问(所有权限均授予用户)。我有该文件的直接链接。我不需要打开它,只需检查它是否在那里。
如果这是一个本地文件,我会使用 Dir() 检查文件是否存在。但是,这不适用于 URI。
我尝试了一种基于 GET via objHttp 的方法,但我收到的唯一响应是一个网页,指出“我无权查看此页面”[在标签中]。
这是否可行?
我正在尝试编写一个 Excel (2010) 宏,该宏在某些时候必须确认公司共享点网站上某个文件 (doc/pdf) 的存在。该文件可通过 Internet Explorer 访问(所有权限均授予用户)。我有该文件的直接链接。我不需要打开它,只需检查它是否在那里。
如果这是一个本地文件,我会使用 Dir() 检查文件是否存在。但是,这不适用于 URI。
我尝试了一种基于 GET via objHttp 的方法,但我收到的唯一响应是一个网页,指出“我无权查看此页面”[在标签中]。
这是否可行?
试一试:
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 即可运行此函数,因此如果您最终遇到这种情况,只需从.Open调用中删除这些参数。此外,所有标题内容可能都不是必需的,但我的请求中总是有它们,所以我把它们留在了里面。
我不知道这对你有帮助吗?但我正在和你分享我的想法。您可以为此使用 http 网络请求。如下例所示:
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
}
}
让我知道这是否对您有帮助?