2009-03-09 20 views
0

このコードはIDEでうまくいきますが、exeファイルに書き込まれたときにいつもクラッシュし、同じマシンで実行されます。どんな考え?IDEでコードが動作し、エラー91の "オブジェクト変数が設定されていません"

PageFinished = False 
Cancelling = False 
OKToUnload = False 

WebBrowser.Navigate ("https://www.example.com/index.jsp") 

Do While PageFinished = False 'set to true in document complete event 
    DoEvents 
    If Cancelling = True Then 
     OKToUnload = True 
     GoTo Endline 
    End If 
Loop 
PageFinished = False 
WebBrowser.Document.All("UserId").Value = txtNumber.Text 'error here 
+0

example.comはこのようなものに使用されています。あなたのために追加しました。 –

+0

オラフール私はあなたが言っていることを理解していません – kjack

+0

OK今理解してくれて、ありがとう – kjack

答えて

1

どの変数がNOTHINGに設定されているかをテストした結果を示すmsgboxを追加するか、テキストファイルに書き込み、EXEを実行して何が設定されていないかを確認する必要があります。

最後の行の前に待機するのは簡単です。 Waitサブルーチンは次のようになります。

Public Sub Wait(T As Double) 
    Dim StartTime As Double 
    StartTime = Timer 
    Do While Abs(Timer - StartTime) < T 
    Loop 
End Sub 

私は1/10秒を試してあなたの方法を試してみましょう。すなわちWait .1秒以上待機する必要がある場合は、DoEventsを定期的に呼び出して、アプリケーションを応答可能に保つようにしてください。

この理由は、IDEが常にPCODEを使用するため、EXEに準拠したEXEよりも遅いタッチです。違いがあるかどうかを確認するために、PCODEにコンパイルすることもできます。

+0

こんにちはRSあなたの提案はうまくいったが一貫していなかったが、それは私のせいだった。私はうんざりした。 documentcompleteではなくwebbrowserのdownloadcompleteイベントで、私のPagefinished変数をtrueに設定しました。ごめんなさい! – kjack

1

あなたのサンプルコードの多くを見ることなく、私は、これはVB IDEによって「隠し」だタイミングの問題であることを推測するベンチャーと思います。 .Valueプロパティを設定する前にWebBrowser.Document.All( "UserId")をテストします。コードのIDE以外のバージョンがその時点に到達した時点では、おそらく利用できません(Nothing)。

"オブジェクト変数またはブロック変数が設定されていません"は、VBがnull参照を通知する方法で、WebBrowser.Document.All( "UserId")行にはnullの可能性のある3つのオブジェクトがあります。

+0

ウェブブラウザーのdocumentcompleteイベントではなく、downloadcompleteに愚かに反応することが原因でタイミング問題でした。間違った情報を申し訳ありません。 – kjack

関連する問題