C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

EdgeIEのコード最適は何でしょうか


(過去ログ 173 を表示中)

[トピック内 1 記事 (1 - 1 表示)]  << 0 >>

■99854 / inTopicNo.1)  EdgeIEのコード最適は何でしょうか
  
□投稿者/ ピカチュウ (1回)-(2022/06/13(Mon) 15:15:22)

分類:[その他の言語] 

社内ソフト画面は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

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -