我正在尝试开发一个宏,该宏将能够自动检查工作表中的跟踪号格式,确定要使用的快递地点,然后获取发货状态。到现在为止,一切都进行得很顺利,因为tnt和dhl的结果均未在地址中追踪任何内容,但我还是有些困惑,因为表单的提交似乎是通过javascript完成的。
我设法通过专注于输入框并在输入否之后使宏的“发送键”选项卡,选项卡和Enter来欺骗它,但是它并不那么优雅,通过我的测试,成功率似乎约为70%。
我尝试了各种不同的getelementsby ...,但似乎没有什么东西可以成功提交表单。
有没有一种方法可以调用JavaScript来开始查询,或者有另一种提交表单本身的方法?
添加了一段经过编辑的代码进行测试,以及为按钮和JavaScript似乎都添加了html代码:
sub ups()
Dim objIE
Dim Website
Dim Element
Dim cRng As Range
Set cRng = "1Z30RY119130505965"
Set objIE = "https://www.ups.com/tracking/tracking.html"
With objIE
.visible = True
.navigate Website
Do While objIE.Busy Or objIE.ReadyState <> 4
DoEvents
Loop
Set Element = .Document.GetElementsByName("trackNums")
'a part of code I found useful for when previous Do
'While fails and events start executing too early
Dim btimer As Integer
btimer = 0
Do While Element.Item(3).Value = 0
Application.Wait (Now + TimeValue("0:00:01"))
btimer = 4 Then
Exit Do
End If
Loop
Element.Item(3).Focus
Element.Item(3).Value = cRng.Value
SendKeys "{TAB}"
SendKeys "{TAB}"
SendKeys "{~}"
<div class="btnBar">
<input name="track.x" class="ups-cta ups-cta_primary" type="submit" value="Track"></input>
</div>
<script language="JavaScript1.2" type="text/javascript">
$(function)
{
Tracking.setLocaleString('en_KR');
Tracking.setLoadingText('Loading. Please wait a moment.');
Tracking.setErrorMessage3('The systen is unable to process your request at this time. Please try again later.');
Tracking.addInatructionTextForyinputPage("Enter up to 25 tracking or InfoNotice numbers, one per line.", 'y');
谢谢您的任何想法。