首页 文章

VBA / .Net通过Windows安全从受密码保护的网站下载文件

提问于
浏览
1

我有一个SharePoint测试网站(Azure SharePoint场),其中包含多个图像文件和一些文档模板 . 我想将图像下载到我的本地驱动器 . 我期望循环浏览一个URL列表,例如http://mySharePointSite/Sites/Images/Image01.png并依次下载每个 . 我用这种方法无法通过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(我的下一个最陡的学习曲线)是可能的吗?

1 回答

  • 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
    

相关问题