我尝试使用VBA在某些HTML页面上提交数据。 HTML页面包含一些Java脚本,它是一个安全的页面。
我尝试使用下面的代码,但它只打开网站窗口,并且不会填写页面上的任何文字。
我知道我仍然需要添加登录名/密码验证码,msgbox(用于停止控制),提交按钮点击代码。
有人可以帮忙吗?
Sub Tes()
Dim IE As Object
Dim TrackID As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.navigate "https://abcxxx.com/xxxx/xxxxxxx/Pages/CustInfo.aspx"
IE.Visible = True
Do Until IE.readystate = 4: DoEvents: Loop
Set TrackID = IE.document.getelementbyid("abc00_abc001_234_5678_81b0_txtCustomerNo")
TrackID.Value = Range("A2").Value
TrackID.form.submit
End Sub
:::标题信息:::
<head id="ctl00_HEAD1"></head>
<body onload="javascript:if (typeof(_spBodyOnLoadWrapper) != 'undefined') _spBodyOnLoadWrapper();" scroll="yes">
<form id="xxxForm" onsubmit="javascript:return WebForm_OnSubmit();" action="/xxxx/xxxxxxx/Pages/CustInfo.aspx" method="post" name="xxxForm">
<div></div>
<script type="text/javascript"></script>
<script type="text/javascript" src="/WebResource.axd?d=l9_fanifTkSGPMjqQJxGzkhm0A9CUTq0e2fMvidi8…mlhiyeYfbecR_SY_yD1HlOp8dnx1WI0dTdidvw1&t=634605258709717464"></script>
<script></script>
<script language="JavaScript" type="text/JavaScript"></script>
<script></script>
<script type="text/javascript" src="/WebResource.axd?d=wAwuGCcAd8-EEHMrxtDWcHPpbrIz4dtxvSld4vGrJ…1WyuhxU_XTb_KI5FuNTSBKr7UJL75sqY7cXp281&t=634605258709717464"></script>
<script type="text/javascript" src="/WebResource.axd?d=zXhglhR5yBgSmErqplHM82fD2Jq9gJIaO6HzhlL5E…MnKMvLQ-2WyEUUcPnCWpgOMpxqYDqDmsApddeA1&t=634605258709717464"></script>
<script type="text/javascript"></script>
答案 0 :(得分:0)
您已经编辑了实际的网站地址,因此没有人能够真正找出您做错了什么。但是你的方法看起来很好 - 同样的代码在另一个网站上适用于我:
Sub main()
Dim IE As Object
Dim TrackID As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.navigate "http://www.wikipedia.org/"
IE.Visible = True
Do Until IE.readystate = 4: DoEvents: Loop
Set searchInput = IE.document.getelementbyid("searchInput")
searchInput.Value = "Visual Basic for Applications"
searchInput.form.submit
End Sub
答案 1 :(得分:0)
您有一个带有编辑名称 xxxForm 的表单。如果您希望设置值的所有输入元素都是此表单的子元素,我会将一个对象设置为表单并将其用作父表单。
我更喜欢使用Microsoft HTML元素声明。您可能需要将VBE的工具►参考 Microsoft Internet Controls 和 Microsoft HTML对象库添加到您的项目中。
Sub Tes()
Dim IE As new SHDocVw.InternetExplorer
Dim eTrackForm As MSHTML.IHTMLElement
Set IE = CreateObject("InternetExplorer.Application")
IE.navigate "https://abcxxx.com/xxxx/xxxxxxx/Pages/CustInfo.aspx"
IE.Visible = True
IE.Silent = True
Do while ie.busy or IE.readystate <> 4: DoEvents: Loop
Set eTrackForm = IE.document.getelementbyid("xxxForm")
if not eTrackForm is nothing then
with eTrackForm
.getelementbyid("ID_of_the_name_input").value = "Me"
.getelementbyid("ID_of_the_password_input").value = "MyPass"
.getelementbyid("abc00_abc001_234_5678_81b0_txtCustomerNo").value = Sheets("Sheet1").Range("A2").Value
.submit
end with
end if
End Sub
看起来,一旦您将我的通用凭据和输入元素ID更改为实际凭据,它就会让您通过第一个凭据输入表单。这里没什么神奇的。实际上,这里提供的代码或其他代码作为可能的解决方案之间几乎没有什么区别。