powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / как избежать сообщений компилятора VBA?
7 сообщений из 7, страница 1 из 1
как избежать сообщений компилятора VBA?
    #38594096
Игорь_777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, почтенные форумчане! Я пытаюсь разобраться со следующей ситуацией...
Итак, в форме есть код, который производит печать выбранного листа в PDF посредством библиотек установленного на компьютере PDFCreator`а.
Для того, чтобы код функционировал нормально, необходим установленный в системе принтер PDFCreator. В проекте я включаю ссылку на его библиотеку. В форме объявляю событие готовности/неготовности принтера к печати и т.п.

Собственно, когда все компоненты на моем компе присутствуют, код работает чисто. Но, когда я тестирую код на другом компе, где нет установленного PDFCreator`а, компилятор сразу же ругается на строку, описывающую событие несуществующего принтера. Как-то так.

Вопрос- а можно ли как-то обойти эту неприятную ситуацию? Я вижу это так:

1.После запуска кода проверить наличие библиотеки PDF- принтера в Refrences. Если библиотека обнаружена, каким-то образом создать нужное событие. Возможно ли это?
2. Если библиотека не обнаружена, флажком деактивировать часть кода по работе с принтером.

Как же быть с событиями несуществующих компонентов? Компилятор VBA сразу ругается.
...
Рейтинг: 0 / 0
как избежать сообщений компилятора VBA?
    #38594098
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Используйте позднее связывание, т.е. вместо
Код: vbnet
1.
Dim PDFCr As New pdfcreator.printer 'условно

пишите
Код: vbnet
1.
2.
3.
4.
5.
Dim PDFCr As Object, noPDFCr As Boolean
On Error Resume Next
Set PDFCr = CreateObject("pdfcreator.printer") 'условно
If Err Then noPDFCr = True 'флаг отсутствия принтера
Err.Clear
...
Рейтинг: 0 / 0
как избежать сообщений компилятора VBA?
    #38594100
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С событиями, правда, облом - т.е. можно, но сложно.
...
Рейтинг: 0 / 0
как избежать сообщений компилятора VBA?
    #38594105
Игорь_777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КазанскийИспользуйте позднее связывание, т.е. вместо
Код: vbnet
1.
Dim PDFCr As New pdfcreator.printer 'условно

пишите
Код: vbnet
1.
2.
3.
4.
5.
Dim PDFCr As Object, noPDFCr As Boolean
On Error Resume Next
Set PDFCr = CreateObject("pdfcreator.printer") 'условно
If Err Then noPDFCr = True 'флаг отсутствия принтера
Err.Clear



Спасибо за ответ! Собственно, проблема то не в определении наличия компонента и исключения выполнения "ошибочного " кода, а в событиях... )). Возможно ли программно создать строчку события в области объявления на уровне формы через средства IDE?
Предположим, я создаю программно скрытую форму, в которой программно же создаю код обработки событий принтера и код работы с принтером. И после этого могу работать с принтером? Теоретически вроде должно получиться, а вот практически- можно ли таким образом, в реальном времени в процессе выполнения программы, объявить событие или произойдет ошибка?
...
Рейтинг: 0 / 0
как избежать сообщений компилятора VBA?
    #38594109
Игорь_777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попутно возник вопрос от дилетанта. Ясно, он не раз обсуждался на форуме, но все-же...
Я так понимаю, всегда, когда ты не знаешь наверняка, будет ли доступен необходимый компонент на "чужом" компе, необходимо применять позднее связывание по методу указанному выше? Я применил код, который проверяет коллекцию Reference на наличие нужных мне компонентов, и соответственно, блокирую флажками те части кода, которые невозможно применить при отсутствии соотв. компонентов. Но я везде применял раннее связывание, а это, наверное, в таких случаях не есть гуд?)
...
Рейтинг: 0 / 0
как избежать сообщений компилятора VBA?
    #38594378
_Дмит_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь_777всегда, когда ты не знаешь наверняка, будет ли доступен необходимый компонент на "чужом" компе, необходимо применять позднее связывание
Сами ответили, можно и по другому. Но обычно примененяют позднее связывание.
Ещё один плюс можно подключить разные версии компонентов одним кодом, в отличии раннего. Но есть и недостаток ввиде снижении быстродействия.
...
Рейтинг: 0 / 0
как избежать сообщений компилятора VBA?
    #38595182
Игорь_777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за советы всем!)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / как избежать сообщений компилятора VBA?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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