teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

サンプルコードの追加

2018/05/25 12:19

投稿

hatena19
hatena19

スコア34367

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