2009-03-09 2 views
0

Этот код отлично работает в среде IDE, но каждый раз на последней строке происходит сбой при выполнении exe и запускается на том же компьютере. Любая идея почему?Код работает в IDE сбой в exe с ошибкой 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

Хорошо, поймите сейчас, спасибо – kjack

ответ

1

Вам нужно будет добавить msgboxes, показывающий результат тестирования, для которого переменная установлена ​​в NOTHING или записывается в текстовый файл и запускает exe и видит, что установлено ни к чему.

Это может быть так же просто, как ожидание перед последней строкой. Подпрограмма «Подождите» выглядит так.

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

Я бы попробовал 1/10 секунды и работал правильно. i.e Wait .1 Если вам нужно подождать секунду или больше, убедитесь, что вы периодически вызываете DoEvents, чтобы ваше приложение реагировало.

Причина этого в том, что IDE всегда использует PCODE, так что это медленнее, чем EXE соответствует EXE. Возможно, вы захотите попробовать компилировать в PCODE, чтобы убедиться, что это имеет значение.

+0

Привет, RS Ваше предложение работает, но не последовательно, но это была моя ошибка. Я облажался. У меня была изменена моя переменная в Pagefinished, равная true в событии downloadcomplete для веб-браузера, а не в документе. Сожалею! – kjack

1

Не видя больше вашего образца кода, я бы рискнул предположить, что это вопрос времени, что это «скрытый» в IDE VB. Перед установкой свойства .Value проверьте WebBrowser.Document.All («UserId»). Вероятно, он недоступен (Nothing) в то время, когда версия IDE, не относящаяся к IDE, попадает в эту точку.

«Переменная объекта или с переменной блокировки не задана» - это способ VB сообщить вам о нулевой ссылке, а в строке WebBrowser.Document.All («UserId») у вас есть 3 отдельных объекта, которые могут быть пустыми.

+0

Это был вопрос синхронизации, как вы говорите, вызванный моим глупо реагированием на downloadcomplete, а не на завершение документа на веб-браузере. Извините за неправильную информацию. – kjack