1

我正在使用 Access VBA 打开 Internet Explorer 并在网站上填写表格。此表单具有自动编号的 id,它经常更改,但下面的“_id”始终相同,我不确定是否或如何使用“_id”将值插入该字段

这是我到目前为止所拥有的,谢谢蒂姆,我不确定这个网站是如何运作的,因为我在这里相当新,但这是我到目前为止所拥有的,关于单选按钮的最后一个问题

Dim ie As InternetExplorer
Dim url As String
Dim htmlDoc As MSHTML.HTMLDocument ' html object lib
Dim htmlInputElemen As MSHTML.HTMLInputElement
Dim htmlElementCol As MSHTML.IHTMLElementCollection

url = www.abc.com
ie.navigate url
‘ this is for text box
Set htmlDoc = ie.Document
Set htmlElementCol = htmlDoc.getElementsByTagName("INPUT")
    For Each htmlInputElemen In htmlElementCol
        If htmlInputElemen.getAttribute("title") = "myTitle" Then
            htmlInputElemen.Value =  “myTitle”
'       ElseIf htmlInputElemen.getAttribute("title") = "myTitle2" Then
            htmlInputElemen.Value = “myTitle2”
        End If
   Next htmlInputElemen
‘ this is for combo box
Set htmlElementCol = htmlDoc.getElementsByTagName("select")
Dim htmlSelectElem As MSHTML.HTMLSelectElement
    For Each htmlSelectElem In htmlElementCol
        If htmlSelectElem.getAttribute("title") = "myComboBox" Then
            htmlSelectElem.Value = “myComboBoxValue”
        End If
    Next htmlSelectElem

‘now I have radio buttons which im not sure how to click using title, any ideas?
I tried this but no luck
Set htmlElementCol = htmlDoc.getElementsByTagName("span")
Dim htmlSpanElem As MSHTML.HTMLSpanElement
    For Each htmlSpanElem In htmlElementCol
        If htmlSpanElem.getAttribute("title") =  “ABC” Then
            htmlSpanElem.Click
        End If
    Next htmlSpanElem

<span class="ms-RadioText" title="ABC">
<input id="234sd87s89df">
<label for="234sd87s89df ">ABC</label>
4

1 回答 1

1
Dim inputs, el

Set inputs = document.getElementsByTagName("input")

For Each el In inputs
    If el.getAttribute("_id") = "R_Destination" Then
        el.Value = "myValue"
        Exit For
    End If
Next el

编辑:这是重构为函数的相同代码

Function GetElement(doc as object, tagName As String, attrName As String, _
                                      attrValue As String) As Object
    Dim rv As Object
    Dim elements, element

    Set inputs = doc.getElementsByTagName(tagName)

    For Each element In elements
        If element.getAttribute(attrName) = attrValue Then
            Set rv = element
            Exit For
        End If
    Next element

    Set GetElement = rv

End Function

用法:

Dim el
Set el = GetElement(document, "input", "_id", "R_Destination")
if not el is nothing then el.value = "myValue"
于 2012-11-07T21:13:58.160 回答