登录数据导入

时间:2015-06-17 15:36:14

标签: excel vba excel-vba cookies

我正在为我的办公室创建一个宏。此宏使用With ActiveSheet.QueryTables.Add(Connection:=代码从网站导入数据。

问题是,使用此宏的任何人都需要登录我想要访问的网站。由于我使用的是Query命令,因此查询需要登录,而不是IE对象。

现在,我让人们转到数据功能区并点击"来自网络"加载网站并以这种方式登录,然后退出并运行宏。这允许Query访问登录cookie并且代码运行正常。我需要一种方法来简化这一点,所以它并不那么复杂。

现在,我有一个用户工具箱,在工作表打开时加载,允许用户输入他们的用户登录名和密码。然后,此用户Box将该信息保存在另一个工作表中。

我正在寻找一种方法来使用他们输入的信息"登录"对于查询导入,因为让用户进入数据功能区只是每个人的痛苦;并让我的代码看起来很草率。有没有办法自动登录查询网站?

*即使我从IE应用程序自动登录,查询仍然要求登录。这让我觉得从IE和查询语言存储的cookie是分开的。

2 个答案:

答案 0 :(得分:0)

是的,站点身份验证令牌(cookie)和查询语言凭据(DB登录)是两个独立的事情。站点级别凭据是身份验证,DB级别凭据是授权。

典型的身份验证令牌存储在浏览器中,用于给定的会话,并通过HTTP请求的标头传递回站点。您的工作表宏正在使用当前浏览器上下文发出信息请求,但如果您没有打开浏览器,它将创建IE对象的临时实例以便发送数据。

我找到了一个论坛,有人试图做同样的事情,看起来他们能够这样做。

http://www.mrexcel.com/forum/excel-questions/421541-web-query-password-protected-web-sites-3.html

以下是为此问题编辑的相关代码:

Set ie = CreateObject("InternetExplorer.Application")
With ie
    .Visible = True
    .Navigate "http://www.somesecuresite.com/login.html"
        Do Until .ReadyState = 4
            DoEvents
        Loop
    .document.all.Item("username").Value = "ldfsdfh"
    .document.all.Item("password").Value = "lkjgshdgsh"
    .document.forms(0).submit
End With

With ActiveSheet.QueryTables.Add(Connection:= _
    "URL;{your connection string}", Destination:=Range("$A$1"))
    .Name = "WebData"
    .FieldNames = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .HasAutoFormat = True
    .TablesOnlyFromHTML = True
    .AdjustColumnWidth = True
    .Refresh BackgroundQuery:=False
End With

答案 1 :(得分:0)

这是一个更多的评论,但我没有足够的代表来评论XD你的问题超出了我的范围,但最近使用API​​来自动化Excel中的密码输入,也许这是你可以研究的方向?基本上,您可以抓住特定窗口的句柄,然后与其进行交互,例如填写字段/密码或按下按钮。 通过http://www.siddharthrout.com/2013/04/24/unprotecting-vba-project-password-using-a-password-that-you-know/#!prettyPhoto

的一个很好的例子