Excel 如何使用VBA宏与Internet Explorer下拉组合框导航交互?

Excel 如何使用VBA宏与Internet Explorer下拉组合框导航交互?,excel,vba,internet-explorer,Excel,Vba,Internet Explorer,我在尝试使用Excel宏在internet explorer中自动创建下拉组合框时遇到困难。请注意,我对VBA语言和web抓取非常陌生 我未成功使用的代码是: 'Change Posting Period Dim posting As Object Set posting = ie.Document.getElementById("inpt_postingperiod2") posting.Value = ActiveWorkbook.Sheets("RMA").Range("C5").Val

我在尝试使用Excel宏在internet explorer中自动创建下拉组合框时遇到困难。请注意,我对VBA语言和web抓取非常陌生

我未成功使用的代码是:

'Change Posting Period

Dim posting As Object
Set posting = ie.Document.getElementById("inpt_postingperiod2")
posting.Value = ActiveWorkbook.Sheets("RMA").Range("C5").Value

'The value in this cell C5 in this instance is: Aug 2019
在internet explorer中,此代码将更改下拉框中显示的文本,但当我稍后提交页面时,基本值从未真正更改

我尝试将fireevents添加到代码中,例如:

posting.fireevent ("onfocus")
posting.fireevent ("onkeydown")
无功而返

与下拉列表相关的脚本是:


它可能正在使用任何事件在下拉列表中设置所选值

我们可以看到,在您的下拉代码中有许多事件,如

onkeydown="getDropdown(this).handleKeydown(event);" onkeypress="getDropdown(this).handleKeypress(event);" onfocus="getDropdown(this).handleOnFocus(event);" onblur="getDropdown(this).handleOnBlur(event);"
因此,您可以尝试从VBA代码触发这些事件,以检查和验证哪个事件正在更改,并在下拉列表中设置值

您可以从VBA触发事件,如下所示

Element.FireEvent("onkeydown") 

您上面的下拉列表代码没有生成下拉列表。如果您提供了有效的下拉代码,我们可以尝试对其进行测试,并尝试开发示例VBA代码来设置其中的值。

它可能正在使用任何事件来设置下拉列表中的选定值

我们可以看到,在您的下拉代码中有许多事件,如

onkeydown="getDropdown(this).handleKeydown(event);" onkeypress="getDropdown(this).handleKeypress(event);" onfocus="getDropdown(this).handleOnFocus(event);" onblur="getDropdown(this).handleOnBlur(event);"
因此,您可以尝试从VBA代码触发这些事件,以检查和验证哪个事件正在更改,并在下拉列表中设置值

您可以从VBA触发事件,如下所示

Element.FireEvent("onkeydown") 

您上面的下拉列表代码没有生成下拉列表。如果您提供了可用的下拉代码,我们可以尝试测试它,并尝试开发示例VBA代码来设置其中的值。

您可以共享url吗?url需要用户名和密码,但我最近刚刚编辑了我的帖子,以包含下拉的完整代码。尝试创建一个html事件作为更改,然后在设置值后触发该事件ie.document.querySelector(“#Input_postingperiod2”)上的事件,请查看我的链接,它会创建事件并将其发送。我尝试了此操作,但未成功:[作为对象集发布的Dim posting=ie.document.querySelector(#Input_postingperiod2”)posting.Value=ActiveWorkbook.Sheets(“RMA”).Range(“C5”).Value posting.fireevent(“onchange”)]我认为,因为它是一个下拉列表,粘贴文本和激发事件在下拉列表中找不到匹配项!您可以共享该url吗?该url需要用户名和密码,但我最近刚刚编辑了我的帖子,以包含下拉列表的完整代码。请尝试创建一个html事件作为更改,然后在ie.document.querySelector(“Input\U postingperiod2”)上设置值后触发该事件看一下我的链接,它会创建事件并发送它。我尝试了一下,但没有成功:[作为对象集发布的Dim posting=ie.document.querySelector(“#inpt#u postingperiod2”)posting.Value=ActiveWorkbook.Sheets(“RMA”).Range(“C5”).Value posting.fireevent(“onchange”)]我认为这是因为它是一个下拉菜单,粘贴文本和激发事件在下拉列表中找不到匹配项!我尝试了FireEvent,但没有成功,不确定要在哪个元素上启动它!我还为下拉列表添加了完整的代码,但选项被阻止(可能是因为它是一个受密码保护的站点),您需要发布一个正确的JS和CSS代码,该组合框才能工作。如果可能的话,您可以尝试在示例HTML页面中自己创建一个类似的组合框,并将其发布到此处。对我们来说,用它做测试会更容易。您需要在combobox元素上激发事件,并且您需要对应用于该combobox的每个事件进行测试,以找到设置其中值的正确事件。我尝试了FireEvent,但没有成功,不确定要激发哪个元素!我还为下拉列表添加了完整的代码,但选项被阻止(可能是因为它是一个受密码保护的站点),您需要发布一个正确的JS和CSS代码,该组合框才能工作。如果可能的话,您可以尝试在示例HTML页面中自己创建一个类似的组合框,并将其发布到此处。对我们来说,用它做测试会更容易。您需要在combobox元素上触发事件,并且需要对应用于该combobox的每个事件进行测试,以找到设置其中值的正确事件。