Internet Explorerの新しいインスタンスを開く必要がなく、最初に特定のURLに移動することなく、既に開いているWebページのフォームフィールド(テキストボックスとボタン)を操作する方法を理解しようとしています。
私は現在、グーグルを開き、検索フィールドに入力し、グーグル検索ボタンをクリックする次のコードを持っています:
Sub Main
Dim objIE
Dim UserN
Dim url As String
url = "http://www.google.com"
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.navigate url
WaitForLoad (objIE)
' runs the sub "Wait for Load" that waits until the page is fully loaded before continuing the script
MsgBox "It Loaded"
Set UserN = objIE.document.getElementsByName("q")
If Not UserN Is Nothing Then
' fill in first element named "q", assumed to be the login name field
UserN(0).value = "Dragon NaturallySpeaking"
End If
Wait 2
Dim f
Set f = objIE.document.getElementsByName("btnK")
f(0).click
End Sub
Sub WaitForLoad (objIE)
Do While objIE.Busy
Wait .1
Loop
End Sub
私の現在の問題は、最初にwww.google.comに移動しなくても、検索フィールドに入力してGoogle検索ボタンをクリックできるようにしたいということです。たとえば、すでにブラウザを開いてwww.google.comにアクセスしましたが、テキストフィールドに入力してボタンをクリックするスクリプトを実行したいと思います。残念ながら、これを行う方法を見つけることができません。CreateObjectの代わりにSetobjIE= GetObject( "InternetExplorer.Application")を使用して、objIE.Visible =TrueとObjIE.NavigateURLを削除しようとしましたが、これはエラーを返すだけです。