Какие причины VB6 “Ошибка времени выполнения '5': Недопустимый Вызов процедуры или Аргумент”

В VB6 пользователи иногда получают эту ошибку, и я не могу воспроизвести его.

Run-Time Error '5': Invalid Procedure Call or Argument

Я ссылаюсь на "MSWord 10 Object Library", и иногда эта ошибка происходит в какой-то момент после того, как приложение открыло MSWord 2002. Однако это приложение ссылалось на MSWord 10 Object Library в течение многих лет, и эта ошибка только что начала происходить за последние несколько месяцев.

Код окружает приложение с помощью следующего:

Dim app As Word.Application = GetObject("", "Word.Application")

Я предполагаю, что представил ошибку где-нибудь, но никакая идея, что могло бы вызывать ее. Ошибка не происходит очень часто и не может быть воспроизведена пользователем, когда я стою там. Ошибка вынуждает приложение полностью закрыться.

Пользователи выполняют Windows XP. Пользователь, сообщающий о проблеме большинство, запускает приложение через Citrix. Существует 350 общих пользователей, приблизительно 100 используют приложение через Citrix.

6
задан DaveInCaz 1 November 2019 в 11:34
поделиться

2 ответа

Это может быть проблема "скорости", когда пользователь запускает Word/вашу форму несколько раз и выдает ошибку модального отображения (http://support.microsoft.com/kb/242347). Например, вы разворачиваете приложение или отображаете его в окне контейнера? Возможно, они становятся нетерпеливыми и нажимают на кнопку более одного раза? Попробуйте быстро нажать на кнопку более одного раза или установить фокус, несколько раз нажать Enter.

Если это так, то вам нужно либо обработать/блокировать многократные нажатия (проще), либо каким-то образом предварительно загрузить Office, чтобы минимизировать задержку при инициализации приложения.

0
ответ дан 17 December 2019 в 04:45
поделиться

Из памяти с VB6 (теперь использующим .NET) это может указывать на то, что компьютеру пользователя не хвастало памяти или что ваш код не может получить дескриптор для приложения Word.

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

В верхней части подсистемы, у которого есть проблемы, поместите

   On Error GoTo MyErrorHandler

, а затем внизу поставьте

   On Error Goto 0
   Exit Sub
MyErrorHandler:
   MsgBox "Error " & Err.Number & " (" & Err.Description & ") at line " & Erl

Вместо того, чтобы использовать MsgBox, как у меня здесь, рассмотрите возможность записи в файл. Также для того, чтобы Erl работал правильно, учитывая нумеровку каждой из ваших линий.

Для VB6 отличным плагином являются инструменты MZ link, которые помогут вам очень легко добавить обработку ошибок и номера строк

5
ответ дан 17 December 2019 в 04:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: