powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не срабатывает on error
19 сообщений из 19, страница 1 из 1
Не срабатывает on error
    #38107396
bac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
   excelVersion = "0"
   On Error GoTo noExcel
   Dim objExcel As Object
   Set objExcel = CreateObject("Excel.Application")
   excelVersion = objExcel.Version
   objExcel.Quit
noExcel:
    On Error GoTo 0



Если на компьютере не установлен excel, то программа выдаёт сообщение, что не может открытить ActiveX и завершается.
Мне хотелось бы просто отключить фукции формирования документов в excel и продолжить работу.
Уважаемые коллеги нет ли у кого соображений по этому поводу?

Win XP/7/2008 R2
VB6
...
Рейтинг: 0 / 0
Не срабатывает on error
    #38107399
Gwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bac,
Вы же сами завершаете программу, вызывая GoTo 0 !
Вместо этого отключайте Ваши "функции формирования"..
...
Рейтинг: 0 / 0
Не срабатывает on error
    #38107476
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GwaВы же сами завершаете программу, вызывая GoTo 0 !On Error Goto 0 означает отключение ранее назначенного On Error, а не выход из программы.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
noExcel:
On error Goto -1
On error Goto errh
...
exit sub
errh:
debug.print err.number

Goto -1 это недокументированная фишка, которая отключает у метки noExcel признак обработчика ошибок. После это можно заново установить On Error.
...
Рейтинг: 0 / 0
Не срабатывает on error
    #38107792
bac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Возможно я не правильно объяснил. Мне не надо ничего отключать. Теоретически должно сработать On Error GoTo noExcel. А вместо этого выводится сообщение и программа завершается. Как будто нет перехвата ошибки.
...
Рейтинг: 0 / 0
Не срабатывает on error
    #38107826
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bacдолжно сработать On Error GoTo noExcel.Оно срабатывает. Но в этом коде его увидеть невозможно, если не произойдёт второй ошибки (которой просто неоткуда взяться).

bacвместо этого выводится сообщениеВ приведённом коде нет вывода сообщения. Не морочьте нам голову.
...
Рейтинг: 0 / 0
Не срабатывает on error
    #38107919
bac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Не срабатывает on error
    #38107921
bac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если посмотреть по отладчику то
Код: vbnet
1.
Set objExcel = CreateObject("Excel.Application")


Именно на этой строке валится
...
Рейтинг: 0 / 0
Не срабатывает on error
    #38107924
bac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Утверджаю, что в моей программе нет вывода такого сообщения
...
Рейтинг: 0 / 0
Не срабатывает on error
    #38107925
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажите код процедуры целиком.
...
Рейтинг: 0 / 0
Не срабатывает on error
    #38107932
bac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
'======================================
' Главная процедура
Sub Main()

    InitCommonControlsVB
    idUser = 0
    NPP = 0
    lShowData = False
    lSchFio = True       ' Поиск по фамилии
    lSchDoc = False      ' Поиск по документу, удостверяющему личность
    lSchPol = False      ' Поиск по страховому свидетельству
    On Error GoTo Err_handler_ODBC
    sqlServer = GetRegString(HKEY_LOCAL_MACHINE, "SOFTWARE\ODBC\ODBC.INI\bp", "SERVER")
    If (sqlServer = "") Then
        sqlServer = GetRegString(HKEY_CURRENT_USER, "SOFTWARE\ODBC\ODBC.INI\bp", "SERVER")
    End If
    On Error GoTo 0

    Set dbCn = New rdoConnection           ' Открыть базу данных
    dbCn.Connect = "DSN=bp;"

    Dim rsVers As rdoResultset
    Set rsVers = dbCn.OpenResultset("SHOW VARIABLES like 'version'")
    MySQLVersion = rsVers!Value
    If Mid(rsVers!Value, 1, 4) <= "4.0." Then   ' Если не версия 4.0.
       MsgBox "Не поддерживается работа с MySQL версии ниже 4.1!", vbCritical
       End
    End If

    If Mid(rsVers!Value, 1, 4) = "4.1." Then   ' Если версия 4.1.
        execSQL "SET DATEFORMAT ymd"
    End If
    dbCn.Execute "SET NAMES 'cp1251'"
    dbCn.Execute "USE bp"

    rsVers.Close

    wordVersion = "0"
    On Error GoTo noWord
    Dim objWord As Object
    Set objWord = CreateObject("Word.Application")
    wordVersion = objWord.Version
    objWord.Quit
noWord:
    On Error GoTo 0

    excelVersion = "0"
    On Error GoTo noExcel
    Dim objExcel As Object
    Set objExcel = CreateObject("Excel.Application")
    excelVersion = objExcel.Version
    objExcel.Quit
noExcel:
    On Error GoTo 0
    If wordVersion = "0" Then
        MsgBox "Внимание не установлен Microsoft Word!" & vbCr & "Выписка рецептов не возможна!", vbExclamation
    End If

    logRec "Start"

    SetLayout kbrdRussian

    Dim fLogin As New frmLogin   ' Вызвать форму регистрации пользователя в системе
    fLogin.Show vbModal
    If Not fLogin.OK Then        ' Если регистрация пользователя отменена
       End
    End If
    Unload fLogin

    frmSplash.Show               ' Показывать форму вспышки пока инициализирется главная форма
    frmSplash.Refresh

    loadOptions                  ' Загрузить из базы Опции

    If Not Integrity() Then
       MsgBox "Нарушена целостность программы или не обновлена версия!", vbCritical
       End
    End If

    Set b64 = New base64
    
    Set fMainForm = New frmMain
    Load fMainForm
    Unload frmSplash

    fMainForm.Show               ' Переход в главную форму программы
    Exit Sub

Err_handler:
    MsgBox "Ошибка установки соединения с базой данных! (" & Err.Number & ")" & Chr(13) & Err.Description, vbCritical
    End
Err_handler_ODBC:
    MsgBox "Не описан источник данных bp! (" & Err.Number & ")" & Chr(13) & Err.Description, vbCritical
    End
End Sub
...
Рейтинг: 0 / 0
Не срабатывает on error
    #38107963
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bac,

Statement Description ......On Error GoTo 0 Disables any enabled error handler in the current procedure.
?
...
Рейтинг: 0 / 0
Не срабатывает on error
    #38107968
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1
13759131
2
вынеси определение версий для Ворда/Экселя в отдельные функции
3
вообще, имхо , очень "не слабо" подымать Ворд/Эксель Апп, что бы выяснить версию ...
через рееестр - не достаточно было бы ?
...
Рейтинг: 0 / 0
Не срабатывает on error
    #38107971
bac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty112bac,

Statement Description ......On Error GoTo 0 Disables any enabled error handler in the current procedure.
?

Это я в курсе. И в соотвествии с программой с начала устанавливается перехват ошибки, а когда в нем нет нуж ды отменяется.
...
Рейтинг: 0 / 0
Не срабатывает on error
    #38107973
bac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А кого колышит, что я делаю для определения версии?
До этого ведь не доходит! А?
...
Рейтинг: 0 / 0
Не срабатывает on error
    #38107976
bac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty1121
2
вынеси определение версий для Ворда/Экселя в отдельные функции


Что это дает? Конечно сейчас проверю!
...
Рейтинг: 0 / 0
Не срабатывает on error
    #38107980
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
    On Error GoTo 0

    Set dbCn = New rdoConnection           ' Открыть базу данных
    dbCn.Connect = "DSN=bp;"

А если нет соединения, можно невозбранно вылетать с ошибкой?
bacТеоретически должно сработать On Error GoTo noExcel.Если сработало On Error GoTo noWord, GoTo noExcel не сработает.
Невозможно использовать "on error goto метка" в обработчике ошибок, не отключив признак обработки ошибки.
Еще раз перечитайте мой первый пост.

Завершение программы с помощью end довольно часто происходит с ошибкой. Лучше избавляйтесь от этой дурной привычки.
...
Рейтинг: 0 / 0
Не срабатывает on error
    #38107994
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bacqwerty112bac,

Statement Description ......On Error GoTo 0 Disables any enabled error handler in the current procedure.
?

Это я в курсе. И в соотвествии с программой с начала устанавливается перехват ошибки, а когда в нем нет нуж ды отменяется.
это ты, как раз, "не в курсе"
1
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub test()
On Error GoTo Err1
    Dim i
    i = 1 / 0
Err1:
On Error GoTo 0
On Error GoTo Err2
    i = 1 / 0

Err2:
    MsgBox "!"
End Sub


2
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub test()
On Error GoTo Err1
    Dim i
    i = 1 / 0
Err1:
On Error GoTo -1
On Error GoTo Err2
    i = 1 / 0

Err2:
    MsgBox "!"
End Sub

...
Рейтинг: 0 / 0
Не срабатывает on error
    #38108005
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот пример на goto 0

Код: vbnet
1.
2.
3.
4.
5.
6.
Sub test()
    On Error Resume Next
    Debug.Print 1 / 0
    On Error GoTo 0
    Debug.Print 1 / 0
End Sub
...
Рейтинг: 0 / 0
Не срабатывает on error
    #38108008
bac
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Спасибо! С -1 Все работает как надо!
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не срабатывает on error
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]