Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Глюк с VB в Accesse! / 25 сообщений из 32, страница 1 из 2
03.11.2003, 15:48
    #32313682
Kassa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
У меня officeXP.
В коде :
Dim word AS Object
Set word = CreateObject("Word.application")

доходит до второй строчки и пропадает строка степа. При этом никакой ошибки не выдается просто тихо заканчивает выполнение программы.

Проверяла этто в VB6 - все работает, а в Accesse не работает, хоть тресни. Правда мне тут подсказали, что это будет работать в 97 или в 2000 офисе. А как бы это заставить работать в хрюшном оффисе?
...
Рейтинг: 0 / 0
03.11.2003, 15:56
    #32313709
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
Не правильно подсказали. В 2002 тоже работает.
У тебя просто проблемы в офисе (если, конечно , ты нам сказать ничего не забыл типа On Error resume next в начале программы- тогда проблемы - в тебе
...
Рейтинг: 0 / 0
03.11.2003, 16:19
    #32313758
Kassa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
2 Senin Viktor

ты нам сказать ничего не забыл
неее:) я ничего не забылА

у меня вообще нету On error . Я еще не сделала обработчик ошибок, так как дальше второй строчки не могу итти.

Так ты предлагаешь office переустановить?
...
Рейтинг: 0 / 0
03.11.2003, 16:48
    #32313822
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
>Так ты предлагаешь office переустановить?

проблемы могут быть не только в офисе -но и в виндоусе, в правах доступа.
Сам ворд открывается нормально?
Попробуй для начала залить сервис-паки - возможно они исправят что-нибудь.
Попробуй так же подключит Word через ссылки (Microsoft Word 10.0 Object Libliry) и сделай
Dim w As Word.Application
Set w = New Word.Application
w.Visible = True

так же попробуй вставить в свой текст проги
word.Visible = True - что-нибудь покажется?
...
Рейтинг: 0 / 0
03.11.2003, 16:58
    #32313845
Kassa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
у меня Microsoft Word 10.0 Object Library итак была подключена))) этто я сразу проверила...
а вот посему то CreateObject не работает, а так как ты предложил работает
Dim w As Word.Application
Set w = New Word.Application !

так что пасиба за помощь) тока глюк все равно не поняла! ну лана покатит и
New Word.Application
...
Рейтинг: 0 / 0
03.11.2003, 17:09
    #32313862
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
Kassa ... Классный ник!
...
Рейтинг: 0 / 0
03.11.2003, 17:13
    #32313872
Kassa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
2 Pavel

ты первый кто оценил мой ник)))
...
Рейтинг: 0 / 0
03.11.2003, 17:20
    #32313889
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
И фотка классная. Твоя?
...
Рейтинг: 0 / 0
03.11.2003, 17:25
    #32313899
Kassa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
Нет! Джулии Робертс в детстве!)))

канечно моя
...
Рейтинг: 0 / 0
03.11.2003, 17:27
    #32313904
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
Круто!
Давай по аське переписываться! Только я свою не помню... Завтра на работе посмотрю.
...
Рейтинг: 0 / 0
03.11.2003, 17:30
    #32313911
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
2 Kassa
Потому что писать нужно так.
Dim wd As New Word.Application (А НЕ OBJECT)
Set wd = CreateObject("Word.Application")

2 Pavel
Успехов:)
...
Рейтинг: 0 / 0
03.11.2003, 17:33
    #32313914
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
Сорри. Погорячился - с Object тоже работает, просто никогда так не писал:)
...
Рейтинг: 0 / 0
03.11.2003, 17:33
    #32313915
Kassa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
2 Hummer
так я же не с бухты-барахты написала Dim word AS Object и т.д. я этто с helpа содрала, там никакие ограничения не написаны!

2 Pavel
Мою аську могешь в инфе посмотреть...
...
Рейтинг: 0 / 0
03.11.2003, 17:34
    #32313920
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
2 Hummer
Dim wd As New Word.Application
После этого никаких Create не надо
...
Рейтинг: 0 / 0
03.11.2003, 17:38
    #32313930
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
2ЛП
>Dim wd As New Word.Application
>>После этого никаких Create не надо

Не учи девушку плохому стилю :)

==
А вот почему CreateObject... не работает - не понятно. Все-таки надо до конца разобраться, а то еще что-нибудь загадочное выскочит.
...
Рейтинг: 0 / 0
03.11.2003, 17:39
    #32313934
Kassa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
2 Лох Позорный

а как насчет сроки инициализации ? все равно нужно SET Wd = New Word.Application
...
Рейтинг: 0 / 0
03.11.2003, 17:41
    #32313937
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
Уточню про "хороший" стиль:
Код: plaintext
1.
2.
Dim w As Word.Application 
Set w = New Word.Application 
...
Рейтинг: 0 / 0
03.11.2003, 17:56
    #32313980
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
Такой момент.
Написал я нет так:
Dim xl As New Excel.Application
Set xl = CreateObject("Excel.Application")
А вот так:
Dim wd As New Word.Application
SET Wd = New Word.Application (ЛП)

New излишне. Меня интересует другое - что кардинально переменится при различном написании. Кроме стиля написания.
...
Рейтинг: 0 / 0
03.11.2003, 17:59
    #32313994
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
2Hummer
>Меня интересует другое - что кардинально переменится при различном написании. Кроме стиля написания.

Если верить Гетцу :), то компилятору (или как там его) прийдется перед каждой! строкой вставлять проверку "а был ли проиницинизилорован объект". Вот на это время проверок уходит время (мало, вообще-то), но общая рекомендация: объявить и уже в нужном месте проинициализировать (=New...)
...
Рейтинг: 0 / 0
03.11.2003, 18:04
    #32314002
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
Идею понял. Спасибо за разъяснение.
Но если строки идут друг за другом разницы нет?:)
Между
Dim xl As New Excel.Application
Set xl = CreateObject("Excel.Application")
И
Dim w As Word.Application
Set w = New Word.Application
...
Рейтинг: 0 / 0
03.11.2003, 20:51
    #32314137
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
2Hummer
>Dim xl As New Excel.Application
>Set xl = CreateObject("Excel.Application")

Опять ты что-то напутал :)

Наверное ты имел ввиду
Dim xl as Excel.App...
set xl=new Excel.App...

Надо найти оригинал из Гетца, но думаю компилятор (или как его там) все-таки везде строки всатвляет - не будет же он разбираться есть, например, операторы типа Goto, вызовы процедур, наличие обработчика ошибок (из-за него выполнение программы может вообще перескочить в непредсказкемое место).

Во всяком случае у меня уже на автомате "двойная" запись инициализации объекта.
Если потестисть (кто сделает?) - то производительность не намного ухудшиться (если вообще это будет заметно). Скорей всего очень будет заметно на больших объемах. Но проверять как-то впадлу.
...
Рейтинг: 0 / 0
04.11.2003, 09:28
    #32314339
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
2 Senin Viktor
Может не совсем понятно вопрос ставлю. Я спросил, в чём разница между записью:
Dim xl As Excel.Application (тут было ещё New - смотри в примечании).
Set xl = CreateObject("Excel.Application")
И
Dim w As Word.Application
Set w = New Word.Application

Конкретно интересует разница во вторых строчках.
Чтобы было понятно - это идёт в самом начале процедуры, потом создаются объекты типа книга и лист (в екселе), а уж потом идёт к ним обращение.

Получил ответ:
Если верить Гетцу :), то компилятору (или как там его) прийдется перед каждой! строкой вставлять проверку "а был ли проиницинизилорован объект". Вот на это время проверок уходит время (мало, вообще-то), но общая рекомендация: объявить и уже в нужном месте проинициализировать (=New...)

Из этого следует, что если к объекту идёт обращение - то придётся делать проверку. Но обращения быть не может, т.к. объекта ещё нет:) Т.е. нет инициализации.
Или опять всё не так понял?:)

Убрал New при декларировании Excel. C New мне ситуация понятно, при екселе он лишен.
Вопрос в следующем - между Create в первом случае и New во втором разница есть? По-моему нет.

P.S. Я понял, излишне писать New при обяъвлении переменной xl, но на производительности это не сказывается. В этом и состояло замечание ЛП.
...
Рейтинг: 0 / 0
04.11.2003, 09:42
    #32314353
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
Hummer писал:P.S. Я понял, излишне писать New при обяъвлении переменной xl, но на производительности это не сказывается. В этом и состояло замечание ЛП.
Ты неправильно понял что объявление As New не сказывается на производительности. Именно сказывается. Один раз объявляешь переменную As New, и потом у тебя при каждом обращении к объекту проверяется - Nothing он или нет (если Nothing - создается новый)

А вот при разнов создании объектов (Set xl = CreateObject("Excel.Application") и Set w = New Word.Application ) есть разница во времени создания (не проверял правда), но на дальнейшей работе сказываться не должно.
...
Рейтинг: 0 / 0
04.11.2003, 10:24
    #32314413
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
2 Лох Позорный
Спасибо за науку.
Т.е. такое объявление переменных (as New) не есть гуд. Это применяется к любым объектам, как я понимаю? Т.е. при работе с классами возникает такая же ситуация?
Лучше писать не
Dim cm New As MySuperClass,
а
Dim cm As MySuperClass
Set cm = New MySuperClass

Если я обяъвил его как New и начинаю использовать сразу же, то разницы никакой нет. При работе с классами я пишу именно так...

Вот прочитал.
...
Рейтинг: 0 / 0
04.11.2003, 16:18
    #32315020
AlexJuice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк с VB в Accesse!
По поводу неработоспособности первоначального примера:
Word - это имя библиотеки.
Думаю, поэтому и не работал.

Код: plaintext
Dim word As word.Application


Обратите внимание, что второе слово тоже оказалось с маленькой буквы
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Глюк с VB в Accesse! / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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