1

私はvbaを使用してInternetExplorerを自動化しようとしていますが、以下は私のコードです。

Sub go_IE()
Dim objIE As SHDocVw.InternetExplorer
Dim htmlColl As MSHTML.IHTMLElementCollection
Dim htmlInput As MSHTML.HTMLInputElement
Dim htmlDoc As MSHTML.HTMLDocument

Set objIE = New SHDocVw.InternetExplorer

objIE.Visible = True

objIE.Navigate "example.com/abc/home/" 'load web page google.com

While objIE.Busy
  DoEvents  'wait until IE is done loading page.
Wend

Set htmlDoc = objIE.Document 'htmlDoc now holds home page

Set htmlColl = htmlDoc.getElementsByTagName("button")

For Each htmlInput In htmlColl

                    If htmlInput.Type = "submit" Then
                        htmlInput.Click     ' click on the submit button
                    End If

Next htmlInput

While objIE.Busy
  DoEvents  'wait until IE is done loading page.
Wend

Set htmlDoc = objIE.Document

Set htmlColl = htmlDoc.getElementsByTagName("button")

For Each htmlInput In htmlColl

                    If htmlInput.Type = "submit" Then
                        htmlInput.Click     ' click on the submit button
                    End If

Next htmlInput

While objIE.Busy
  DoEvents  'wait until IE is done loading page.
Wend


objIE.Quit


End Sub

ホームページをクリックして次のページに移動すると、次の行には何も表示されません。

Set htmlDoc = objIE.Document

許可が拒否されたとだけ言っています。

私はほとんど調査をしませんでしたが、それは同一生成元ポリシーに関連するものであることがわかりました。しかし、チェックしたところ、ホームページの送信ボタンをクリックしてもURLは変更されません。

誰かがこれや提案を解決するのを手伝ってくれますか?

4

1 に答える 1

1

IE を使用する代わりに、xmlHTTP オブジェクトを使用することを検討してください。
HTTP リクエストがより簡単に、より高速に

以下はサンプルコードです

Sub xmlHttp()

    Dim URl As String, lastRow As Long
    Dim xmlHttp As Object, html As Object, objResultDiv As Object, objH3 As Object, link As Object


    lastRow = Range("A" & Rows.Count).End(xlUp).Row

    For i = 2 To lastRow

        URl = "https://www.google.co.in/search?q=" & Cells(i, 1)

        Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
        xmlHttp.Open "GET", URl, False
        xmlHttp.setRequestHeader "Content-Type", "text/xml"
        xmlHttp.send

        Set html = CreateObject("htmlfile")
        html.body.innerHTML = xmlHttp.ResponseText
        Set objResultDiv = html.getelementbyid("rso")
        Set objH3 = objResultDiv.getelementsbytagname("H3")(0)
        Set link = objH3.getelementsbytagname("a")(0)


        str_text = Replace(link.innerHTML, "<EM>", "")
        str_text = Replace(str_text, "</EM>", "")

        Cells(i, 2) = str_text
        Cells(i, 3) = link.href
    Next
End Sub

ここに画像の説明を入力

HTH
サントッシュ

于 2013-07-06T04:00:42.907 に答える