objElement と objCollection を使用して Web サイトからデータを取得しようとしています。関連する実用的なコードは次のとおりです。
Sub Step6()
Dim LoanNumX As Long
Dim LastX As String
Dim Phone1X As String
Dim Phone2X As String
Dim PiX As String
Dim TiX As String
Dim myText2 As String
ActiveWorkbook.Save
Range("M2").Select
Do While ActiveCell.Value <> ""
Dim IE As Object
Dim objElement As Object
Dim objCollection As Object
LastX = ActiveCell.Value
ActiveCell.Offset(, -12).Select
BigX = ActiveCell.Value
Phone1X = "N/A"
Phone2X = "N/A"
PiX = "N/A"
TiX = "N/A"
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate "https://website.com"
Application.StatusBar = "https://website.com is loading. Please wait..."
Do While IE.Busy
Application.Wait DateAdd("s", 1, Now)
Loop
Set objCollection = IE.Document.getElementsbyTagName("input")
A1 = 0
While A1 < objCollection.Length
If objCollection(A1).Name = "networkId" Then
objCollection(A1).Value = "ID"
Else
If objCollection(A1).Name = "password" Then
objCollection(A1).Value = "PW"
Else
If objCollection(A1).Name = "btnLogin" Then
Set objElement = objCollection(A1)
objElement.Click
End If
End If
End If
A1 = A1 + 1
Wend
Do While IE.Busy
Application.Wait DateAdd("s", 1, Now)
Loop
上記のコードは完全に機能します。以下のコードは上記のコードの直後にあり、問題が発生します。
Application.StatusBar = "Search form submission. Please wait..."
Set objCollection = IE.Document.getElementsbyTagName("input")
L = 0
While L < objCollection.Length
If objCollection(L).Name = "account" Then
objCollection(L).Value = BigX
Else
If objCollection(L).Name = "lastName" Then
objCollection(L).Value = LastX
Else
If objCollection(L).Type = "image" Then
Set objElement = objCollection(L)
objElement.Click
End If
End If
End If
L = L + 1
Wend
何らかの理由で、上記のコードはスキップされます。理由はわかりませんが、マクロが while ステートメントを通過することはありません。最初から L > objCollection.Length であるかのようです。スクリプトにステップインすると、次からジャンプします。
While L < objCollection.Length
次のコード セグメントに:
Wend
その結果、IE が開かれ、最初のページがアクセスされ、ログイン データが入力および送信され、結果のページが表示され、IE の別のインスタンスが開かれ、ループが繰り返されます。IE、最初のページ、ログイン データ、結果のページ、IE、最初のページ、ログイン データ、結果のページ、IE... マクロを強制終了すると、多くのインスタンスがすべて同じページにスタックしてしまいます。
いくつかの異なるアプローチを試みましたが、これまでのところ問題を解決できませんでした。
HTMLで求めているデータは次のとおりです。
<td><input type="text" name="account" maxlength="9" size="25" value="" onkeypress="accountSelected()" class="inputbox"></td>
<td><input type="text" name="lastName" size="25" value="" onkeypress="lastNameSelected()" class="inputbox"></td>
<input type="image" src="images/search.gif" alt="Search">
どんな助けでも大歓迎です!また、私は MS Excel 2007 と IE 7 を使用しています。Excel 2007 と IE 7 の両方が古いことはわかっていますが、更新できません。