在VBA中使用InternetExplorer.Application

我正在尝试构build一个简单的macros,使用户能够从Excel表中select所需的行并将其导出到Web服务。 macros应该能够用用户名和密码authentication用户,以确保他有权限上传数据。 当用户select需要的行时,IE打开Web服务的authentication页面。 我目前正在尝试捕获用户login成功到Web服务validation凭据时的URL更改。

有没有更好的方法来validation用户? 我解决了使用网站主login页面进行身份validation,因为我不想通过脚本发送用户名和密码。

以下是我的代码的样子:

Call NavigateToURL(--url of login page--) Public Sub NavigateToURL(ByVal argURL As String) Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") With objIE .Visible = True .Silent = True .Navigate argURL Do Until objIE.LocationURL() = (--url after successfull log in--) DoEvents Loop If n = (---url after successful log in--) Then objIE.Navigate (--redirect to another url) Else MsgBox ("Sorry. Authentication Failed.") End If 

但Do-Until Loop之后的部分工作不正常。 任何机构能指出我出错的地方吗?

我认为做一个更简单的方法是通过一个InputBox (或者一个自定义的用户表单,如果你想使它更有趣)来获取用户名和密码。 这是这个想法:

 Public Sub Main() 'get username and password through input boxes username = InputBox("Type your username") password = InputBox("Type your password") NavigateToUrl(argURL, username, password) End Sub Public Sub NavigateToURL(ByVal argURL As String, ByVal username As String, ByVal password As String) Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") With objIE .Visible = True .Silent = True .Navigate argURL Do While .Busy DoEvents 'wait for the page to load Loop 'you will have to revise the below lines according to the HTML of the document .document.getElementById("username").Value = username .document.getElementById("password").Value = password .document.getElementById("login-button").Click End With End Sub 

像这样(这是想法清楚,你需要工作的HTML对象),你将不能硬编码的用户名和密码,但避免检查Internet Explorer的外部线程。