【发布时间】:2016-01-25 20:28:26
【问题描述】:
下午好,
我正在尝试设置一种为内部网站自动生成报告的方法。我在一所大学任教,需要通过大学提供的界面从教师可访问的数据库中提取一些数据。因此,我正在尝试访问我有权查看的资料,需要登录才能查看,但不想重复这些步骤可能数百次。
我的想法是:
1) 使用带有我的凭据的 IE 登录大学提供的界面(因此系统知道我已获得授权)。
2) 向 excel 提供我要跟踪的学生的 ID 号列表
3) 使用 VBA 遍历每个 ID,执行以下步骤:
- 将 Excel 列表中的 ID 号输入到相应的表单文本框中
- 点击“提交”按钮
- 点击结果页面上的辅助“提交”按钮
- 复制出现的 HTML 文本页面,并解析出我需要的信息
- 移动到下一个数字并重复
我已经尝试了一些我见过的其他选项(例如 VBA to Enter Data Online and Submit Form),但在语法上遇到了错误。
我试图引用的网站上的 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>
我在 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
所以,我首先打开一个 IE 窗口并登录该界面,然后启动 VBA。应用程序运行,打开一个新的 IE 窗口,点击该网站(它保留了我从第一个网站开始的登录权限),然后崩溃并出现未指定的错误。
看起来这应该很简单,但我只是没有看到它。
谢谢! -G-
【问题讨论】:
-
试试这个
IE.document.getElementsByName("idinputform").Item(0).Value = "myID",其中myID= 学生ID的单元格值或您目前硬编码的任何ID。 -
唉,不。 IE.document.getElementsByName("idinputform").Item(0).Value = "myID" 不起作用。 IE.document.getElementByName("number").Value = "myID" 也没有。其他想法?
-
啊,我看错了
getElementByName("ID_NUM").Item(0).Value -
仍然没有快乐,但开始对我的困惑感觉好多了:-) IE.document.getElementByName("ID_NUM").Item(0).Value = "myID" 生成错误 - 运行 -时间错误“-2147467259 (80004005)”:自动化错误/未指定的错误。与此同时,我将开始循环使用 Jeeped 的方法。感谢您的持续帮助!
标签: excel forms vba internet-explorer