|
分類:[その他の言語]
社内ソフト画面はInternetExploreからEdgeIEモードに切り変えるので、それまで作ったInternetExploreのVBAを直す必要がありました。
そこなんですが、コード詳細の中で.ReadyStateや.Busyやdocument.getElementsByNameがあるコードはどう切り替えるのでしょうか。
selniumBasicやselniumBasicを使わずにスクレイピングやEdgeDevToolsProtocolなど調べましたが、どれが最適かがわかりませんでした。
▼コード詳細▼
Private Sub WaitBrowser(ByVal objBrowser As Object)
Do While objBrowser.jsEval("document.readyState") <> "complete"
DoEvents
Loop
End Sub
Sub Sumple()
Dim objIE As Object
Dim actSheet As Worksheet
Dim r As Long
Dim strLastRow As String
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.navigate = "社内のソフト画面にアクセス"
strLastRow = "/" & CStr(Cells(Rows.Count, 2).End(xlUp).Row - 3)
r = 4
Do While Cells(r, "B") <> ""
If Cells(r, "A") <> "*" Then
Application.StatusBar = CStr(r - 3) & strLastRow
' 表示が完了するで待機
While objIE.ReadyState <> 4 Or objIE.Busy = True
DoEvents
Wend
Application.Wait Now + TimeValue("00:00:02")
' 社内ソフトのフォームへの入力
With objIE.document
.getElementsByName("b:Upper")(0).Value = Trim(Cells(r, "B"))
.getElementsByName("c")(0).Value = Trim(Cells(r, "C"))
.getElementsByName("d:Upper")(0).Value = Trim(Cells(r, "D"))
.getElementsByName("e:Upper")(0).Value = Trim(Cells(r, "E"))
.getElementsByName("f:pper")(0).Value = Trim(Cells(r, "F"))
.getElementsByName("gUpper")(0).Value = Trim(Cells(r, "G"))
.getElementsByName("h:Upper")(0).Value = Trim(Cells(r, "H"))
.getElementsByName("i:Upper")(0).Value = Trim(Cells(r, "I"))
If Not l Then
.getElementsByName("k")(0).Click
End If
End With
If Not l Then
' 表示が完了するで待機
While objIE.ReadyState <> 4 Or objIE.Busy = True
DoEvents
Wend
Application.Wait Now + TimeValue("00:00:05")
' 実行
objIE.document.getElementsByName("j")(0).Click
Application.Wait Now + TimeValue("00:00:05")
' 表示が完了するで待機
While objIE.ReadyState <> 4 Or objIE.Busy = True
DoEvents
Wend
' TOPへ戻る
objIE.document.getElementsByName("t")(0).Click
End If
Cells(r, "A") = "*"
End If
r = r + 1
Loop
objIE.Quit
Set objIE = Nothing
Application.StatusBar = False
MsgBox "終了"
End Sub
|