我有一个SharePoint测试网站(Azure SharePoint场),其中包含多个图像文件和一些文档模板。我想将图像下载到我的本地驱动器。我期望循环浏览一个URL列表,例如http://mySharePointSite/Sites/Images/Image01.png并依次下载每个。我已经尝试过URLDownloadToFile,如果我将这些图像放在常规网站上,但是我无法通过这种方法通过Windows安全性。
我开始创建一个InternetExplorer.Application对象(后期绑定)并可以查看我的图像,但无法下载它们。正在尝试ieApp.ExecWB但这会引发Run Time Error that seems insurmountable。
我也尝试过WinHTTP.WinHTTPrequest.5.1(StackOverflow 22051960)但是,虽然看起来很有希望但它返回了一个短字符串“???????”而不是图像。
我真的希望有一个VBA解决方案,我想知道Impersonate User是否可以提供选项,或者是否有其他选项(不包括使用SendKeys)。可悲的是,我正在推动我的VBA知识的极限,并且可以真正使用一些指导。
是否可以从VBA的共享点下载?
如果是这样,我错过了一些简单的东西吗?
我可以粘贴代码,但实际上我不确定我有什么值得分享的东西。如果这在VBA中不可能或不可靠,那么VB.Net(我的下一个最陡峭的学习曲线)是可能的吗?
答案 0 :(得分:2)
希望这有助于某人。我最终使用Visual Studio在VB.Net中创建了一个可以从VBA调用的DLL。 VB.Net dll需要引用microsoft.sharepoint.client
VBA代码需要引用生成的dll。
Imports Microsoft.SharePoint.Client
Module Module1
Sub Main()
Dim myContext As Microsoft.SharePoint.Client.ClientContext
myContext = New ClientContext("http://TestSP-a.cloudapp.net/sites/Images/")
Dim myCredentials As New System.Net.NetworkCredential
'' I'm accessing a website from the outside so there
'' are no credentials on my PC. If on the same NW I
'' assume I can use the line below instead of the
'' 3 lines that follow.
'myCredentials = System.Net.CredentialCache.DefaultNetworkCredentials
myCredentials.UserName = "UserNameForSharePoint"
myCredentials.Password = "PassWordForSharePoint"
myCredentials.Domain = "" ' <-- Leave Blank
Dim mySiteSP As New Uri("http://TestSP-a.cloudapp.net/sites/Images/Image1.png")
Dim myTemp As String = "C:\temp\test.png"
My.Computer.Network.DownloadFile(mySiteSP, myTemp, myCredentials, True, 600000I, False)
End Sub
End Module