Excel 参考';onclick';If语句的事件-IE自动化

Excel 参考';onclick';If语句的事件-IE自动化,excel,vba,internet-explorer,automation,onclick,Excel,Vba,Internet Explorer,Automation,Onclick,如果这有点混乱,我道歉。然而,我在这里有点不懂。我有一个宏,它正在使IE自动化。在某一点上,我的宏导航到用于下载报告的URL。URL几乎总是相同的。然而,链接中的一个数字有时会发生变化。链接中更改的数字只能是1或2。获取报告按钮的onclick事件指示将生成哪个报告。因此,我需要我的宏有一个IF语句来读取onclick,如果onclick有1,它将导航到带有1的链接,或者如果它是2,它将导航到带有2的链接。我已在下面提供了onclick详细信息: Link with 'ReporttypeID=

如果这有点混乱,我道歉。然而,我在这里有点不懂。我有一个宏,它正在使IE自动化。在某一点上,我的宏导航到用于下载报告的URL。URL几乎总是相同的。然而,链接中的一个数字有时会发生变化。链接中更改的数字只能是
1
2
。获取报告按钮的
onclick
事件指示将生成哪个报告。因此,我需要我的宏有一个
IF
语句来读取
onclick
,如果
onclick
1
,它将导航到带有
1
的链接,或者如果它是
2
,它将导航到带有
2
的链接。我已在下面提供了
onclick
详细信息:

Link with 'ReporttypeID=1'

<input name="btnContinue" class="primary" id="btnContinue" onclick="javascript:pop('Splash.aspx?SplashID=3&amp;../Reports/ReportView.aspx&amp;ReporttypeID=1&amp;lang=EN&amp;ruletypeid=5&amp;ruleid=0'); return false;" type="submit" value="Continue">```

Link with 'ReporttypeID=2'

<input name="btnContinue" class="primary" id="btnContinue" onclick="javascript:pop('Splash.aspx?SplashID=3&amp;../Reports/ReportView.aspx&amp;ReporttypeID=2&amp;lang=EN&amp;ruletypeid=5&amp;ruleid=0'); return false;" type="submit" value="Continue">```

这些答案是基于有一个或另一个总是存在

提取onclick属性并测试它是否包含字符串
“ReporttypeID=1”

另一种方法是使用css with contains操作符来检查节点列表长度

If ie.document.querySelectorAll("[onclick*='ReporttypeID=1']").Length > 0 Then
    'report 1
Else
  'report 2
End If

谢谢,我无法让第一个解决方案工作,因为我一直在为未定义的对象获取调试错误,不确定我的代码中是否可能缺少某些内容,但是第二个解决方案工作得很好。谢谢你!IE自动化有点超出我的深度,我最近才学会如何通过查找ID来操作页面,你能详细说明css属性的作用和工作方式吗?这里有一个很好的解释:我们通过querySelector或querySelectorAll方法HTMLDocument(IE.document)应用css选择器这将返回第一个匹配项作为节点,或者返回所有匹配项作为节点列表(分别)。nodeList有一个.Length属性,它告诉您为css选择器检索了多少个节点。
If Instr(ie.document.getElementById("btnContinue").getAttribute("onclick"),"ReporttypeID=1")> 0 Then
    'report 1
Else
  'report 2
End If
If ie.document.querySelectorAll("[onclick*='ReporttypeID=1']").Length > 0 Then
    'report 1
Else
  'report 2
End If