1

AccessVBAを使用してInternetExplorerを開き、Webサイトのフォームに入力しています。このフォームには自動番号のIDがあり、頻繁に変更されますが、以下の「_id」は常に同じであり、「_id」を使用してそのフィールドに値を挿入できるかどうか、またはどのように使用できるかわかりません。

これは私がこれまでに持っているものです。Timimに感謝します。このサイトがここでかなり新しいimとしてどのように機能するかはわかりませんが、これは私がこれまでに持っているものです。ラジオボタンに関する最後の質問です。

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 に答える