gpt4 book ai didi

html - 在 Excel VBA 中选择一个没有 ID 的 HTML 按钮

转载 作者:行者123 更新时间:2023-12-04 22:30:29 25 4
gpt4 key购买 nike

已经在这个问题上工作了一天。我有一个网络表单,您有一组标准数据,然后您输入采购申请的行项目;我正在尝试在 Excel 中输入所有数据并使用 VBA 将其传输到站点。我被困在如何“更新部分”(我需要单击以在网页上添加另一个行项目的按钮上的文本)。我还尝试了将选项卡移到正确位置的发送键方法(只是正常的移动会遇到其中一个字段的错误)。我对任何解决方案都很好,这是我第一次尝试将 Excel 链接到 HTML,所以很有趣。

从我可以找到的按钮没有id,所以我没有成功调用它。

这是我的代码(删除了网址):

Sub Login_2_Website()

Dim oHTML_Element As IHTMLElement
Dim oHTML_Element1 As IHTMLElement
Dim sURL As String
Dim aURL As String
Dim nodeList As Object


On Error GoTo Err_Clear
sURL = URL Can't be Shared
oBrowser.Silent = True
oBrowser.timeout = 60
oBrowser.Navigate sURL
oBrowser.Visible = True

Do
' Wait till the Browser is loaded
Loop Until oBrowser.ReadyState = READYSTATE_COMPLETE

Set HTMLDoc = oBrowser.Document
Set nodeList = HTMLDoc.querySelectorAll("a[onlick*='UpdatePartRow']")

HTMLDoc.all.UserName.Value = ThisWorkbook.Sheets("sheet1").Range("I1")
HTMLDoc.all.Password.Value = ThisWorkbook.Sheets("sheet1").Range("I2")

For Each oHTML_Element In HTMLDoc.getElementsByTagName("input")
If oHTML_Element.Type = "submit" Then oHTML_Element.Click: Exit For


HTMLDoc.all.reason.Value = ThisWorkbook.Sheets("sheet1").Range("B1") ' selects the reason for the requisition

HTMLDoc.all.Comments.Value = ThisWorkbook.Sheets("sheet1").Range("B2") ' selects the comments to purchasing

HTMLDoc.forms("_PurchaseRequisition").getElementsByTagName("select")("RequiredMonth").Value = ThisWorkbook.Sheets("sheet1").Range("B3")
HTMLDoc.forms("_PurchaseRequisition").FireEvent ("onchange")

HTMLDoc.forms("_PurchaseRequisition").getElementsByTagName("select")("RequiredDay").Value = ThisWorkbook.Sheets("sheet1").Range("B4")
HTMLDoc.forms("_PurchaseRequisition").FireEvent ("onchange")

HTMLDoc.forms("_PurchaseRequisition").getElementsByTagName("select")("RequiredYear").Value = ThisWorkbook.Sheets("sheet1").Range("B5")
HTMLDoc.forms("_PurchaseRequisition").FireEvent ("onchange")

HTMLDoc.forms("_PurchaseRequisition").getElementsByTagName("select")("CommodityMain").Value = ThisWorkbook.Sheets("sheet1").Range("B9")
HTMLDoc.forms("_PurchaseRequisition").FireEvent ("onchange") 'Selects the commodity group

HTMLDoc.all.Quantity.Value = ThisWorkbook.Sheets("sheet1").Range("B11")
HTMLDoc.all.Description.Value = ThisWorkbook.Sheets("sheet1").Range("B12")
HTMLDoc.all.ChargedDepartment.Value = ThisWorkbook.Sheets("sheet1").Range("B13")
HTMLDoc.all.SubJobNumber.Value = ThisWorkbook.Sheets("sheet1").Range("B14")
HTMLDoc.all.AccountNumber.Value = ThisWorkbook.Sheets("sheet1").Range("B15")
HTMLDoc.all.UnitPrice.Value = ThisWorkbook.Sheets("sheet1").Range("B16")
HTMLDoc.all.CommodityMainSub.Value = ThisWorkbook.Sheets("sheet1").Range("B17")


Set nodeList = HTMLDoc.querySelectorAll("a[onlick*='UpdatePartRow']")

nodeList.Item(0).Click
nodeList.Item(0).FireEvent "onclick"



Next


' oBrowser.Refresh ' Refresh If Needed
Err_Clear:
If Err <> 0 Then
Err.Clear
Resume Next
End If
End Sub

对于登录部分,我修改了以下代码: http://vbadud.blogspot.com/2009/08/how-to-login-to-website-using-vba.html#ZiqYAtAQMHzl7x1k.99

这非常有效,输入字段也是如此。

与此按钮关联的 HTML 段是:
<a onclick="UpdatePartRow();
chkKeepSubmitPR();

return false;" href=""></a>

<a onclick="var doc = window.document.forms[0];
UpdatePartRow();
chkKeepSubmitPR();
if (doc.OrgMatrixYes.value == &quot;Y&quot;) {
VerifyDeptOrgMatrix();
}


return false;" href=""><img src="/Web/purchreq.nsf/UpdatePart.gif?OpenImageResource" width="72" height="25" border="0"></a>

我接受这个是因为这个系统很痛苦。我可以有多个宏并让用户点击每个订单项之间的按钮,但我想尝试提供一个完整的解决方案。我是一名机械工程师,我的编码经验仅限于我在制作工具以减轻工作时所学到的知识。任何帮助或建议都会非常有帮助。如果需要更多信息,请告诉我,我可以尽我所能提供帮助。谢谢!

更新:我已尝试(参见代码)进行建议的更改。在编码方面,我仍然是一个相当完整的新手,所以请多多包涵,感谢您尝试教我!

最佳答案

你有两个 aonclick 标记那里的元素

您可以使用 "*" 获得属性 = 值 CSS 选择器。包含运算符以在属性值中搜索子字符串

a[onclick*='UpdatePartRow']

您可以通过 querySelectorAll 获取两者。 HTMLDocument 对象的方法
Dim nodeList As Object
Set nodeList = HTMLDoc.querySelectorAll("a[onclick*='UpdatePartRow']")

对于您的示例,两个匹配项如下:

索引 0
<a onclick="UpdatePartRow(); chkKeepSubmitPR(); return false;" href="">

索引 1
<a onclick="var doc = window.document.forms[0]; UpdatePartRow(); chkKeepSubmitPR(); if (doc.OrgMatrixYes.value == &quot;Y&quot;) { VerifyDeptOrgMatrix(); } return false;" href="">

enter image description here

您可以通过索引访问节点列表,例如
nodeList.item(0).Click
nodeList.item(0).FireEvent "onclick"

关于html - 在 Excel VBA 中选择一个没有 ID 的 HTML 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53281519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com