Gor*_*ith 9 forms excel internet-explorer vba
下午好,
我正在尝试为内部网站设置一种自动化报告的方法.我在一所大学任教,需要通过大学提供的界面从教师可访问的数据库中提取一些数据.所以,我正在尝试访问我有权查看的材料,需要登录才能看到,但不想重复这些步骤数百次.
我的想法是:
1)使用带有我的凭证的IE登录学院提供的界面(因此系统知道我已获得授权).
2)在我试图跟踪的学生身上提供一份ID号列表
3)使用VBA迭代每个ID,执行以下步骤:
我已经尝试了一些我见过的其他选项(例如VBA进入数据在线和提交表单)但是语法上出现了错误.
我试图引用的网站上HTML编码的相关部分是:
<FORM ACTION="action" METHOD="POST" NAME="idinputform">
Enter Number Here:
<INPUT TYPE="number" NAME="ID_NUM" SIZE="9" MAXLENGTH="9">
<INPUT TYPE="hidden" NAME="refresh_proc" VALUE="menu_1">
<INPUT TYPE="submit" VALUE="Submit"> <INPUT TYPE="reset" VALUE="Reset">
</FORM>
Run Code Online (Sandbox Code Playgroud)
我在Excel中得到的是:
Sub QueryInfo()
Application.ScreenUpdating = False
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "website address"
IE.Document.idinputform.number.Value = "000000000"
Application.ScreenUpdating = True
End Sub
Run Code Online (Sandbox Code Playgroud)
所以,我首先打开IE窗口并登录界面,然后启动VBA.应用程序运行,打开一个新的IE窗口,点击网站(从第一个保留我的登录权限),然后崩溃与未指定的错误.
看起来这应该是直截了当的,但我只是没有看到它.
谢谢!-G-
小智 1
在处理集合(多个对象)时,我发现最好循环遍历可用对象,并在进行时测试每个对象。
Sub QueryInfo()
Dim ie As Object, iFRM As Long, iNPT As Long
'Application.ScreenUpdating = False 'uncomment this once it is working
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate "website address"
'wait untli the page loads
Do While ie.busy Or ie.readyState <> 4 'READYSTATE_COMPLETE = 4
DoEvents
Loop
With ie.document.body
For iFRM = 0 To .getElementsByTagName("form").Length - 1
If LCase(.getElementsByTagName("form")(iFRM).Name) = "idinputform" Then
With .getElementsByTagName("form")(iFRM)
For iNPT = 0 To .getElementsByTagName("input").Length - 1
Select Case LCase(.getElementsByTagName("input")(iNPT).Name)
Case "id_num"
.getElementsByTagName("input")(iNPT).Value = 123
Case "refresh_proc"
.getElementsByTagName("input")(iNPT).Value = "menu_2"
End Select
Next iNPT
.submit '<~~ submit the form
Do While ie.busy Or ie.readyState <> 4: DoEvents: Loop
Exit For
End With
Exit For
End If
Next iFRM
End With
With ie.document.body
'should be at the form's destination
End With
Application.ScreenUpdating = True
End Sub
Run Code Online (Sandbox Code Playgroud)
页面上可能有多个表单。仔细检查每一项,直到找到名称正确的一项。在该表单定义内,有多个输入元素;循环遍历每个并根据需要应用参数。完成后,提交表单并退出循环。
| 归档时间: |
|
| 查看次数: |
1569 次 |
| 最近记录: |