Код работает в среде IDE, вылетает в exe с ошибкой 91 «переменная объекта не установлена» - PullRequest
0 голосов
/ 10 марта 2009

Этот код прекрасно работает в IDE, но каждый раз вылетает в последней строке, когда он превращается в исполняемый файл и запускается на той же машине. Есть идеи почему?

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

Ответы [ 2 ]

1 голос
/ 10 марта 2009

Вам нужно будет добавить 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-файл. Вы также можете попробовать скомпилировать в PCODE, чтобы увидеть, если это изменится.

1 голос
/ 10 марта 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...