位置もname、id もランダムですので、それでは判断できませんね。
前の要素(ラベル)に、"Address" "Email" ・・・などの標題がついてますので、それで判断すればいいのでは。
前の要素は element.previousElementSibling で取得できます。
時間があったのコードを書いて試してみました。
前の要素より、親要素の innerText で標題を取得したほうがシンプルですね。(すぐ前の要素ではないようなので。)
vba
1Public Sub Test()
2 Dim col As New Collection
3 Dim objIE As Object
4 Dim el As Object
5
6 col.Add "○○株式会社", "Company Name"
7 col.Add "社長", "Role in Company"
8 col.Add "太郎", "First Name"
9 col.Add "山田", "Last Name"
10 col.Add "abc@abc.com", "Email"
11 col.Add "012-345-6489", "Phone Number"
12 col.Add "東京都", "Address"
13
14 Set objIE = CreateObject("InternetExplorer.Application")
15 objIE.Visible = True
16 objIE.navigate "http://www.rpachallenge.com/"
17 Call IEWait(objIE)
18
19 For Each el In objIE.document.forms(0).getElementsByTagName("input")
20 If el.Type = "text" Then
21 el.Value = col(el.ParentNode.innerText)
22 End If
23 Next
24End Sub
25
26'IEを待機する関数
27Function IEWait(ByRef objIE As Object)
28 Do While objIE.Busy = True Or objIE.readyState <> 4
29 DoEvents
30 Loop
31End Function