从VBA在IE中启动JavaScript查询

时间:2018-07-26 10:02:58

标签: vba excel-vba

我正在尝试开发一个宏,该宏将能够自动检查工作表中的跟踪号格式,确定要使用的快递地点,然后获取发货状态。到现在为止,一切都进行得很顺利,因为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');

谢谢您的任何想法。

0 个答案:

没有答案