只是一个FYI ......我正在使用UserForm1.WebBrowser1.document.CurrentWindow.execScript("return doSubmit( this.form )").Click
代码来提取
我需要点击下一个按钮,但元素ID不可用;下面是HTML代码
<input class="saveButton" onclick="return doSubmit( this.form )" type="BUTTON" value="Next">
我尝试使用下面的vba代码,但这对我不起作用
Dim CurrentWindow As HTMLWindowProxy: Set CurrentWindow = UserForm1.WebBrowser1.document.parentWindow
Call CurrentWindow.execScript("return doSubmit( this.form )")
如果需要进一步的操作,请告诉我
答案 0 :(得分:0)
因此。点击没有ID的内容可以完成,你只需要知道如何找到你想要的东西。通常,我建议通过innertext单击元素作为一个很好的备份。
我知道你不可能分享这个网页,所以我不会问。但是,分配给此元素的标记是什么? “td”,“a”,“div”,“input”等等。
您可以使用此循环查找元素。
Dim Cnt As Variant
Dim oCell As Object
Cnt = 0 '
With oie.document.all
For Each oCell In .tags("a") 'This will change according to html tagging of element
If oCell.value = "Next" Then 'If this "Next" value is unique.
oie.document.all.Item(cnt).click 'If doesn't trigger try nextline
oie.document.all.item(cnt).fireevent ("onclick")
Exit For
End If
Cnt = Cnt + 1
Next oCell
End With
Set oCell = Nothing
现在,为了让这个工作。启用“Microsoft Internet Controls”参考库。
根据HTML结构可能需要改变一些事情。
oie.document.all.item'这可能会改为像oie.document.body。或者oie.document.forms(0).document.all。
就像我说的那样,需要更改“a”以查看分配给html中元素的每个标记。
我希望这指出你正确的方向,如果你不想在每次运行宏时运行循环,你可以把它放到一个运行的函数中并在加载时分配所有元素。但有一件事一次:)
答案 1 :(得分:0)
您好,感谢您的快速转身!
代码未运行...
我按照我的要求尝试了您的代码并进行了必要的更改:
Dim Cnt As Variant
Dim oCell As Object
Cnt = 0
With UserForm1.WebBrowser1.document.all
For Each oCell In .tags("input")
If oCell.Class= "saveButton" Then
UserForm1.WebBrowser1.document.all.Item(Cnt).Click
UserForm1.WebBrowser1.document.all.Item(Cnt).FireEvent ("onclick")
Exit For
End If
Cnt = Cnt + 1
Next oCell
End With
Set oCell = Nothing
End Function
只是一个FYI ...我正在使用userform来执行此任务。 正如你所说,我们需要一些独特的价值,所以我有“保存”按钮&#39;作为类和代码更改为&#39; oCell.class&#39; ... 有没有机会找到&#39; savebutton&#39;这是独一无二的吗?
非常感谢!