Страница: 1 |
Вопрос: Set xlApp = CreateObject("Excel.Application&q | Добавлено: 17.05.05 13:21 |
Автор вопроса: ![]() |
Когда Excel отсутствует на компе
Set xlApp = CreateObject("Excel.Application") вызывает ошибку 91, причем обработчик ошибок почему-то ее не перехватывает и прога слетает. Как можно проверить наличие на компьютере Excel.Application? Второй вопрос: в момент создания файла Excel (а файлы бывает создаются долго) Screen.MousePointer = vbHourglass не работает. Чем это вызвано и как заставить смениться курсор? |
Ответы | Всего ответов: 12 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 87 Ответов: 459 |
Профиль | Цитата | #1 | Добавлено: 17.05.05 14:42 |
Странно: ошибка "Object variable or With block variable not set" (код 91) - относится к разряду "trappable errors". И должна перехватываться обработчиком, по идее. Кроме того, если Эксель не установлен, то приведённый тобою код должен вызывать ошибку 429. У меня Эксель установлен, поэтому я могу лишь попытаться эмулировать ту же ошибку:
Private Sub Form_Load()
Dim MyObj As Object Set MyObj = CreateObject("Just.Some.Shit" ![]() End Sub Ругается, что "ActiveX component can't create object" (код 429). А "On Error Resume Next" прекрасно подавляет ошибку... Я сам всегда проверял наличие Офисных приложений путём вызова CreateObject с обработчиком ошибок. Странно всё это... |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 298621256 Вопросов: 57 Ответов: 304 |
Профиль | Цитата | #2 | Добавлено: 17.05.05 14:51 |
Да, ужасно странно...
Кидаю exe на голую машину только с ХРюном и зарегистрированными библиотеками VB/ Пока выкрутился следующим образом: проверяю в реестре наличие HKEY_CLASSES_ROOT\Excel.Application Это конечно не панацея, но помогает |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 87 Ответов: 459 |
Профиль | Цитата | #3 | Добавлено: 17.05.05 14:54 |
А как у тебя xpApp объявлена? |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 298621256 Вопросов: 57 Ответов: 304 |
Профиль | Цитата | #4 | Добавлено: 17.05.05 15:01 |
Object |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 87 Ответов: 459 |
Профиль | Цитата | #5 | Добавлено: 17.05.05 15:15 |
А где именно у тебя расположен вызов "Set xlApp = ..."? в смысле - в каком типе проекта (EXE, DLL, etc)? хотя... вряд ли это влияет. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ICQ: 308-534-060 Вопросов: 20 Ответов: 1860 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 17.05.05 15:28 |
Да чего тут говорить, без установленного Excel и речи ни о чём быть не может. Excel.Application - это и есть установленный Excel... Как ни крути, ничего не выйдет |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 298621256 Вопросов: 57 Ответов: 304 |
Профиль | Цитата | #7 | Добавлено: 17.05.05 15:33 |
2Comanche:
exe 2mc-black: выходит через HKEY_CLASSES_ROOT\Excel.Application |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #8 | Добавлено: 17.05.05 18:11 |
А нафиг тут вообще позднее связывание? |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() Вопросов: 0 Ответов: 1876 ![]() |
Профиль | Цитата | #9 | Добавлено: 17.05.05 18:52 |
Потому что иначе можно будет работать только с той версией офиса, под которую писалась прога. |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 87 Ответов: 459 |
Профиль | Цитата | #10 | Добавлено: 17.05.05 19:16 |
2Lister:
а ты уверен, что ошибка возникает именно на строчке с "Set"? ты ж вроде на "лысый" комп EXE-шку кидал, а не Visual Studio ставил; т.е. пошагово не отладишь, надо всякие мессаджбоксы в код втыкать (или ещё что из той же серии). М.б. не слишком часто их навтыкал - и в итоге ошибся с диагнозом? |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 298621256 Вопросов: 57 Ответов: 304 |
Профиль | Цитата | #11 | Добавлено: 17.05.05 20:40 |
2Comanche:
На лысом компе есть и зарег-ны все нужные dll и ocx. Слушай, я сейчас поэкспериментировал и создал новый проект... Так вот, код Option Explicit Private Sub Form_Load()
Dim xlApp As Object On Error GoTo ErrHandler Set xlApp = CreateObject("Excel.Application" ![]() Exit Sub ErrHandler: MsgBox Err.Description, vbCritical, Err.Number End Sub мне нормально дает 429 ошибку, т.е. обработчик в нем работает. Сейчас буду разбираться... |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() Разработчик Offline Client ICQ: 204034 Вопросов: 106 Ответов: 1919 |
Профиль | Цитата | #12 | Добавлено: 18.05.05 07:39 |
Я подключаю к моей программе плагины на CreateObject, а 429 ошибка
выдает сообщение о том, что файл плагина не зареган в системе. Вот: Case 429 'Если плагин не зарегистрирован - зарегистрируем и перейдем к тому же действию If cPlug.RegisterLib(Path & "Plugins\" & sPlugin, True) Then Resume И код регистрации (автор - sne): Public Function RegisterLib(ByRef sLibName As String, ByVal bRegister As Boolean) As Boolean Dim hLib As Long, hProc As Long hLib = LoadLibrary(sLibName) If hLib = 0& Then RegisterLib = False Exit Function End If hProc = GetProcAddress(hLib, IIf(bRegister, " ![]() ![]() ![]() If hProc Then Call CallVoid(hProc) Else RegisterLib = False Exit Function End If Call FreeLibrary(hLib) RegisterLib = True End Function Еще: 438 - процедуры в вызываемом классе нету 449 - пропушен один из главных аргументов, передаваемых в плагин 450 - передаваемое число аргументов не равно принимаемому Пока все... ![]() |
Страница: 1 |
|