使用VBA IE自动化选择文本框

时间:2012-11-07 20:16:36

标签: vba ms-access access-vba

我使用Access VBA打开Internet Explorer并在网站上填写表单。 此表单具有自动编号的ID,该编号每隔一段时间就会更改,但是" _id"如下所示总是相同的,我不确定是否或如何使用" _id"将值插入该字段

到目前为止,这是我所拥有的,感谢蒂姆 即时通讯我不确定这个网站究竟是如何工作的,因为我现在已经相当新了,但这是我到目前为止,关于Radio Buttons的最后一个问题

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>

1 个答案:

答案 0 :(得分: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"