Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用vba宏触发特定网页事件_Javascript_Vba_Excel_Internet Explorer 11 - Fatal编程技术网

Javascript 如何使用vba宏触发特定网页事件

Javascript 如何使用vba宏触发特定网页事件,javascript,vba,excel,internet-explorer-11,Javascript,Vba,Excel,Internet Explorer 11,首先,我要说的是,我对web开发的知识非常有限,所以如果我对这里发生的事情有错误,请纠正我 我试图实现的是用VBA复制表单的手动使用,特别是输入邮政编码并按TAB键 我可以创建一个新的IE实例,并使用此功能导航到页面: ' Get reference to (maybe) already initialized reference Public Function getSite(url As String) As InternetExplorer Dim oShell As Object

首先,我要说的是,我对web开发的知识非常有限,所以如果我对这里发生的事情有错误,请纠正我

我试图实现的是用VBA复制表单的手动使用,特别是输入邮政编码并按TAB键

我可以创建一个新的IE实例,并使用此功能导航到页面:

' Get reference to (maybe) already initialized reference
Public Function getSite(url As String) As InternetExplorer
    Dim oShell As Object

    ' curIE is declared as "Private curIE As InternetExplorer" at module level
    If curIE Is Nothing Then
      Set curIE = New InternetExplorer
      curIE.Visible = True
      curIE.navigate url
      Set oShell = CreateObject("WScript.Shell")

      ' Probably redundant, could I get some clarification on this?
      While (curIE.readyState <> READYSTATE_COMPLETE) Or curIE.Busy ' Wait until it has settled and loaded

      Wend

      ' Maximize the window
      Application.Wait Now + TimeValue("00:00:01")
      oShell.SendKeys "% "
      Application.Wait Now + TimeValue("00:00:01")
      oShell.SendKeys "x"
      Set getSite = curIE
    Else
      If curIE.LocationURL <> url Then
        curIE.navigate url
      End If

      Set getSite = curIE
    End If
End Function
我试着只设置该元素的
属性,并使用
oShell.SendKeys
发送一个选项卡,但当以这种方式设置其值时,该字段似乎没有获得焦点。这是这里的关键部分,因为当我知道站点可以自己执行查找时,为每个州的每个县创建一个查找功能太耗时了

如果有一种方法可以使用javascript或任何支持逻辑来执行我试图触发的功能,并且有人可以告诉我如何操作,那就太棒了。非常感谢

编辑:以下是我试图与之交互的ZipCode字段的源代码:

<input name="ZipCode" class="form-control input-lg valid" id="ZipCode" aria-invalid="false" aria-required="true" aria-describedby="ZipCode-error" type="text" placeholder="Zip Code (Required)" value="" data-val-required="Zip Code is required" data-val="true" data-val-regex-pattern="^\d{5}(-\d{4})?$" data-val-regex="Zip Code format is not valid" autocomplete="false">


我不想把这篇文章和整个源代码混在一起,但是可以找到它。

如果你从网站上展示更多的HTML,并解释为什么需要使用TAB?如果选择另一个字段,则直接引用该元素

对于要显示的元素,它有一个id,因此请使用它:

page.getElementById("ZipCode").innerText = "myValue"

该元素上没有可触发的javascript。

我不认为选项卡是触发器,它将退出文本框page.getElementsByName(“ZipCode”).Item(0)。innerText=“12345”和poss Chr()用于选项卡???或者退出控件???我想我理解,所以您认为事件是通过退出该字段触发的。如果是,我如何获得焦点、添加数据和退出字段?您的代码本质上与我上面的代码相同,结果相同:输入了数字,但它不响应输入或选项卡。您根本不需要使用
SendKeys()
。为此,您需要学习如何使用DOM对象-您能为您尝试完成的表单提供源代码吗@Nathan_Sav仅供参考-您可以对选项卡使用
vbTab
常量;)@MacroMan我已经发布了该特定字段的源代码,并在编辑中链接到该页面。Cheers@MacroMan,我不是在写代码,只是想用OP:)激发一些想法
page.getElementById("ZipCode").innerText = "myValue"