2016-11-17 9 views
0

私はいくつかのWebブラウザの処理を自動化するためにマクロを作成していますが、断続的な実行時エラー91 "オブジェクト変数またはブロック変数が設定されていません"私はブラウザオブジェクトを宣言して作成する方法を試してみましたが、何も動いていません。私のExcelマクロが一貫性のないエラーを生成する

Sub Morning_Script() 
Dim WebBrowser As Object 
Set WebBrowser = New InternetExplorerMedium 
WebBrowser.Visible = True 
WebBrowser.navigate "www.google.com" 

While WebBrowser.Busy = True 
    DoEvents 
Wend 

WebBrowser.document.getElementById("lst-ib").Value = "test" 
'WebBrowser.document.getElementById("verify").Value = Worksheets("Sheet1").Range("B2") 
'WebBrowser.document.getElementById("institution").Value = "xxx" 
'Worksheets("Sheet1").Range("B1").Clear 
'Worksheets("Sheet1").Range("B2").Clear 
End Sub 

URLはパブリックウェブサイトに変更され、フォームエントリは現在コメントアウトされています。

+1

フォーム要素にアクセスする前に待機を追加する必要がある可能性があります。 –

+0

何を待つのですか?私はすでにブラウザが読み込まれるのを待ちます。 –

+1

多くの現在のWebコンテンツは動的であり、ページが読み込まれるとロード/作成されます(「ロードされた」とは、すべてのソースが配信されたことを意味しますが、必ずしもページが完成したというわけではありません)。多くのページでは、ページを作成するためにスクリプトを使用して追加のコンテンツを取得します。 「ビジー」のテストは、多くのページで対話状態に移行するプロセスの一部に過ぎません。 –

答えて

0

あなたはこれを試してみてください、固定されたタイマーを避けるために希望した場合:

Dim objElement As Object: Set objElement = Nothing 
While objElement Is Nothing 
    Set objElement = WebBrowser.document.getElementById("lst-ib") 
    DoEvents 
Wend 
objElement.Value = "test" 

あなたがに検証し、制度を参照したい場合、あなたも、彼らのためにこの方式を実装するまで待たなければなりません3つの変数はすべて無意味です。ダウンロードするページ数が非常に多い場合は、タイムアウトまたは最大再試行回数を設定することもできます。

関連する問題