如何使用VBA/Excel使用IE自动化数据输入过程?
我对VBA非常熟悉,我正在尝试使用VBA在Excel中设置一个宏表,以部分自动化我的公司的手动数据输入过程,以帮助减少时间和错误成本 一个成功的脚本将完成以下任务: 启动IE并导航到指定的网站。 使用提供的凭据登录。 在具有唯一ID的字段中输入值,然后按“下一步”按钮 在200个字段中输入相应的数据,每个字段都有唯一的ID,例如LastName_0对应单元格A2,LastName_1对应单元格A3,等等。 目前,我只完成了第1步,在该步骤中,脚本启动IE并导航到相关网站,但是,当尝试插入网站的用户名和密码时,我收到一个运行时错误438对象不支持此属性或方法 我尝试了在谷歌搜索中找到的多个不同的代码,所有这些代码都返回相同的错误。目前,我的用户名和密码列在宏工作簿的第2页上,如代码中所述。由于我缺乏知识,我不确定我的错误在哪里 作为参考,我们在VBA 7.1、Excel 2013和IE 11上运行如何使用VBA/Excel使用IE自动化数据输入过程?,excel,vba,web-scraping,Excel,Vba,Web Scraping,我对VBA非常熟悉,我正在尝试使用VBA在Excel中设置一个宏表,以部分自动化我的公司的手动数据输入过程,以帮助减少时间和错误成本 一个成功的脚本将完成以下任务: 启动IE并导航到指定的网站。 使用提供的凭据登录。 在具有唯一ID的字段中输入值,然后按“下一步”按钮 在200个字段中输入相应的数据,每个字段都有唯一的ID,例如LastName_0对应单元格A2,LastName_1对应单元格A3,等等。 目前,我只完成了第1步,在该步骤中,脚本启动IE并导航到相关网站,但是,当尝试插入网站的用
Sub login()
Const Url$ = "https://iapps.courts.state.ny.us/chrs/SignIn"
Dim UserName As String, Password As String, LoginData As Worksheet
Set LoginData = ThisWorkbook.Worksheets("Sheet2")
UserName = LoginData.Cells(1, "B").Value
Password = LoginData.Cells(2, "B").Value
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
With ie
.navigate Url
ieBusy ie
.Visible = True
Dim oLogin As Object, oPassword As Object
Set oLogin = .document.getElementsByName("txtUserName")(0)
{This is where the 438 error occurs ^}
Set oPassword = .document.getElementsByName("pwPassword")(0)
oLogin.Value = UserName
oPassword.Value = Password
.document.forms(0).submit
End With
End Sub
Sub ieBusy(ie As Object)
Do While ie.Busy Or ie.readyState < 4
DoEvents
Loop
End Sub
目前,表2的用户ID设置在单元格B1中,密码设置在单元格B2中
预期的结果将是成功登录,在这一点上,我将努力找出页面要遵循的代码以及实际数据输入页面的代码。使用适当的页面加载等待。使用ID,因为它们速度更快。我使用css id选择器,例如txtUserName,它相当于getElementById,但速度更快
Option Explicit
'VBE > Tools > References: Microsoft Internet Controls
Public Sub Login()
Dim ie As InternetExplorer
Const URL As String = "https://iapps.courts.state.ny.us/chrs/SignIn"
Dim userName As String, password As String, loginData As Worksheet
Set ie = New InternetExplorer
Set loginData = ThisWorkbook.Worksheets("Sheet2")
userName = loginData.Cells(1, "B").Value
password = loginData.Cells(2, "B").Value
With ie
.Visible = True
.Navigate2 URL
While .Busy Or .readyState < 4: DoEvents: Wend
With .document
.querySelector("#txtUserName").Value = userName
.querySelector("#pwPassword").Value = password
.querySelector("#btnSubmit").Click
End With
Stop
End With
End Sub