VB и Exel 2010

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

VB и Exel 2010

Сообщение JohnK » 05.10.2010 (Вт) 10:28

Возникла необходимость работы в Win7 под Office 2010 с Exel.
В Exel 2003-2007 проблем нет:
Код: Выделить всё
Public XL As New Excel.Application
XL.Workbooks.Open "..."
...


А вот в Office 2010 ругается что не может найти библиотеку. Кто уже работал с новым офисом?
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: VB и Exel 2010

Сообщение JohnK » 05.10.2010 (Вт) 10:52

Задачу решил, подключив в References - Microsoft Exel 14.0 Object Library
Но что будет если программа будет запускаться на машине с Office 2003- 2007 ?
Как решить проблему совместимости?
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: VB и Exel 2010

Сообщение JohnK » 05.10.2010 (Вт) 11:13

Проверил на машине с 2003 - exe работает. А вот как будет вести себя проект пока не известно...
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: VB и Exel 2010

Сообщение SLIM » 05.10.2010 (Вт) 18:53

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

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: VB и Exel 2010

Сообщение JohnK » 06.10.2010 (Ср) 12:16

А вот и не угадал! :D
Не работает. На машине с установленным офисом 2003-2007 ругается. И не работает... ( я поспешил с выводами в предыдущем посте)
какие варианты могут быть?

У меня один вариант - ручками подгружать...
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: VB и Exel 2010

Сообщение iGrok » 06.10.2010 (Ср) 12:28

Проект - не будет, exe-будет.

Хочешь, чтобы работало и то и то, и ничего не ругалось - убирай из референсов и используй позднее связывание (CreateObject).
Правда, интеллисенса лишишься.
label:
cli
jmp label

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: VB и Exel 2010

Сообщение JohnK » 06.10.2010 (Ср) 12:32

Так из-за этого (лени) и хочется связаться с ранним связыванием (масло масляное :lol: ) Как же без него, родимого интеллисенса!

P.S.
А что не нравиться компилятору?
Файл физически один и тот же:
Location: C:\Program Files\Microsoft Office\Office14\EXEL.EXE
Language: Standart
Разные только версии
Microsoft Exel 14.0 Object Library для Office 2010
и
Microsoft Exel 12.0 Object Library для Office 2007

Вот уж, эти мелкомягкие! :?
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: VB и Exel 2010

Сообщение JohnK » 06.10.2010 (Ср) 13:06

iGrok писал(а):Проект - не будет, exe-будет.

Что проект, что exe в ошибке
Хочешь, чтобы работало и то и то, и ничего не ругалось - убирай из референсов и используй позднее связывание (CreateObject).
Правда, интеллисенса лишишься.



А как ID объекта заполучить? Вот это:
Код: Выделить всё
XL = CreateObject("Excel.Application")

Не работает.
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: VB и Exel 2010

Сообщение Хакер » 06.10.2010 (Ср) 13:38

iGrok писал(а):Хочешь, чтобы работало и то и то, и ничего не ругалось - убирай из референсов и используй позднее связывание (CreateObject).

Сколько можно твердить, что CreateObject не имеет никакого отношения к позднему связыванию, равно как и раннему.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: VB и Exel 2010

Сообщение JohnK » 06.10.2010 (Ср) 14:27

Я все понимаю, но почему не грузится как XL = CreateObject("Excel.Application").
Получается как объект exel зарегистрирован под другим именем?
Хакер, что скажешь?

Просто интересно. Это у всех так или только у меня криво офис установился...

P.S.

Такой ход мыслей правильный? (Жаль под рукой нет VB Studio)

Код: Выделить всё
    strReg=Find_ExelFile
    Reg = LoadLibraryA(strReg)
    lngLoad = CreateThread(ByVal 0, 0, ByVal GetProcAddress(Reg,  "Exel"), ByVal 0, 0, 0)
    WaitForSingleObject lngLoad, 10000

   Set XL = CreateObject("Excel.Application")

    ...

    CloseHandle lngLoad
    FreeLibrary Reg
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: VB и Exel 2010

Сообщение SLIM » 06.10.2010 (Ср) 18:47

JohnK писал(а):А вот и не угадал! :D

Я почему-то подумал что ты CreateObject используешь. Сорри.
Хакер писал(а):Сколько можно твердить, что CreateObject не имеет никакого отношения к позднему связыванию, равно как и раннему.

А что же он тогда делает?
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: VB и Exel 2010

Сообщение Хакер » 06.10.2010 (Ср) 19:27

SLIM писал(а):А что же он тогда делает?

СоздаётОбъект.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: VB и Exel 2010

Сообщение SLIM » 06.10.2010 (Ср) 20:44

Хакер писал(а):СоздаётОбъект.

Прежде чем его создать, нужно узнать где его искать и что это за объект. CreateObject этим не занимается?
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: VB и Exel 2010

Сообщение Хакер » 06.10.2010 (Ср) 20:46

SLIM писал(а):нужно узнать где его искать

Нужно.

SLIM писал(а):и что это за объект

CreateObject это нафиг не нужно.

SLIM писал(а):CreateObject этим не занимается?

Первым занимается косвенно.

И?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: VB и Exel 2010

Сообщение SLIM » 06.10.2010 (Ср) 21:03

Хакер писал(а):CreateObject это нафиг не нужно.

Собственно ему не нужно знать что-то об этом объекте.
Хакер писал(а):И?

И нашел где. Варианта 2 - в exe, в dll. Так?
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: VB и Exel 2010

Сообщение Хакер » 06.10.2010 (Ср) 21:11

Да причём тут варианты, каким образом это относится к изначально отцитированной фразе?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: VB и Exel 2010

Сообщение SLIM » 06.10.2010 (Ср) 21:30

В том что это никак иначе не назовешь как поздним связыванием. Ибо все выполняется уже во время исполнения программы
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: VB и Exel 2010

Сообщение Хакер » 06.10.2010 (Ср) 21:31

Самый умный?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: VB и Exel 2010

Сообщение SLIM » 06.10.2010 (Ср) 21:33

Нет
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: VB и Exel 2010

Сообщение Хакер » 06.10.2010 (Ср) 21:53

Тогда внимай:
1) New делают всю ту же работу, что и CreateObject, и делаёт её точно так же после компиляции и «уже во время исполнения программы».
2) Связывание вообще не имеет никакого отношения к созданию объекта.
3) Какое связывание можно говорить, глядя на то, как вызывают методы объекта.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: VB и Exel 2010

Сообщение SLIM » 06.10.2010 (Ср) 22:00

Хакер писал(а):1) New делают всю ту же работу, что и CreateObject, и делаёт её точно так же после компиляции и «уже во время исполнения программы».

А кто говорил что это _не_ так?
Хакер писал(а):2) Связывание вообще не имеет никакого отношения к созданию объекта.

К созданию - нет.
Хакер писал(а):3) Какое связывание можно говорить, глядя на то, как вызывают методы объекта.

Ы?
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: VB и Exel 2010

Сообщение Хакер » 06.10.2010 (Ср) 22:18

А кто говорил что это _не_ так?

Ты это подразумевал.
Иначе бы ты не акцентировал внимание на «Ибо все выполняется уже во время исполнения программы». Либо по-твоему New делает всё это на этапе компиляции, либо по твоему New — это тоже позднее связывание, а раннего вообще не бывает.

SLIM писал(а):
Хакер писал(а):Связывание вообще не имеет никакого отношения к созданию объекта.

К созданию - нет.

Фига-ли было тогда придираться к фразе «Сколько можно твердить, что CreateObject не имеет никакого отношения к позднему связыванию, равно как и раннему.»?

SLIM писал(а):Ы?

Я не собираюсь тебя просвещать.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: VB и Exel 2010

Сообщение iGrok » 06.10.2010 (Ср) 22:26

SLIM, да успокойся ты уже. )
Будто ты не знаешь, что он прав. =)

Хакер, ну да, забыл. В памяти всплыло только всеобщее заблуждение. И вообще я имел в виду "Позднее связывание И CreateObject". :)
Последний раз редактировалось iGrok 06.10.2010 (Ср) 23:07, всего редактировалось 2 раз(а).
label:
cli
jmp label

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: VB и Exel 2010

Сообщение SLIM » 06.10.2010 (Ср) 22:28

Хакер писал(а):Ты это подразумевал.
Иначе бы ты не акцентировал внимание на «Ибо все выполняется уже во время исполнения программы». Либо по-твоему New делает всё это на этапе компиляции, либо по твоему New — это тоже позднее связывание, а раннего вообще не бывает.

Если бы я это утверждал, ты бы мог смело меня процитировать. Но это не так.
Хакер писал(а):Фига-ли было тогда придираться к фразе «Сколько можно твердить, что CreateObject не имеет никакого отношения к позднему связыванию, равно как и раннему.»?

И как увязать логически процетированное тобой с тем что ты на это ответил?
Хакер писал(а):Я не собираюсь тебя просвещать.

Разве только полошить кого-нибудь...
Пишите жизнь на чистовик.....переписать не удастся.....

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: VB и Exel 2010

Сообщение SLIM » 06.10.2010 (Ср) 22:30

iGrok писал(а):SLIM, да успокойся ты уже. )
Будто ты не знаешь, что он прав. =)

Знаю что он прав. Просто он вообще хочет отвязать эти два понятия. И пусть это не позднее связывание в том широком смысле, но что-то позднее точно.
А так, вообще, интересно в очередной раз посмотреть как он каждый раз вертится, лишь бы не было задето самолюбие.
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: VB и Exel 2010

Сообщение Хакер » 06.10.2010 (Ср) 22:44

iGrok писал(а):И вообще я имел в виду "Позднее связывание И CreateObject".

Уже лучше. И вот тут, в этом месте, нужно разобраться, что является причиной проблемы.
  • То ли просто от версии-к-версии меняется CLSID класса нужного объекта, так, что его создание по старому CLSID оказывается невозможным.
  • То ли меняется ещё и определение рабочего (по отношению к нам) интерфейса класса, и, как следствие, меняеется IID этого интерфейса, так, что его запрос по старому IID оказывается невозможным.

В первом случае нужно вместо CLSID использовать ProgId. Для этого можно использовать CreateObject, а можно и что-то другое, но, самое главное, использовать только в этом случае позднее связывание — не нужно и вообще во-вред.
Во-втором случае нужно вместо рабочего интерфейса использовать интерфейс IDispatch (As Object в VB). Это и есть позднее связывание.

Таким образом, использование CreateObjectследовало бы заменить на более широкое «использование ProgId-а», и обозначить как момент, зависящий от одного аспекта проблемы, а использование позднего связывания — поставить под вопрос и обозначить как момент, зависящий от совершенно другого аспекта проблемы.

SLIM писал(а):Если бы я это утверждал, ты бы мог смело меня процитировать. Но это не так.

Ну конечно, поэтому ты предусмотрительно пишешь полу-вопросами полу-догадками, чтобы «если что» потом сказать: «а я что? я ничего...».

И как увязать логически процетированное тобой с тем что ты на это ответил?

Я много что цитировал и много что писал. О какой паре цитата—ответ идёт речь?


SLIM писал(а):Разве только полошить кого-нибудь...

Как трогательно :cry:
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: VB и Exel 2010

Сообщение JohnK » 06.10.2010 (Ср) 23:05

Хакер, а кусочек кода в подтверждения своих слов?
Как с помощью CreateObject создать экземпляр Excel, так чтобы пример работал как в Office 12 так и в 14?
Хотелось бы конкретики а не теории.
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: VB и Exel 2010

Сообщение iGrok » 06.10.2010 (Ср) 23:09

Хакер писал(а):Таким образом, использование CreateObjectследовало бы заменить на более широкое «использование ProgId-а», и обозначить как момент, зависящий от одного аспекта проблемы, а использование позднего связывания — поставить под вопрос и обозначить как момент, зависящий от совершенно другого аспекта проблемы.

Ага, теперь понял. К моему большому сожалению, мои познания в работе COM пока не так глубоки, и совсем нет времени их расширять, ибо работаю совсем в другой стороне.

JohnK писал(а):А как ID объекта заполучить? Вот это:
Код: Выделить всё
XL = CreateObject("Excel.Application")

Не работает.

А что значит "не работает"? Чем ругается-то?
У меня в 2003м работает, других офисов под рукой нету. Только там Set XL = .... Ну и XL объявлено как Object.
label:
cli
jmp label

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: VB и Exel 2010

Сообщение Хакер » 06.10.2010 (Ср) 23:15

JohnK писал(а):Как с помощью CreateObject создать экземпляр Excel, так чтобы пример работал как в Office 12 так и в 14?

Почём я знаю, что там с этим вашем Excel-ем. У меня уже несколько лет Office из принципа не установлен.

Я не могу на практике определить, какой (какие) из двух обозначенных мною моментов имеют место быть.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Re: VB и Exel 2010

Сообщение JohnK » 07.10.2010 (Чт) 13:06

А что значит "не работает"? Чем ругается-то?
У меня в 2003м работает, других офисов под рукой нету. Только там Set XL = .... Ну и XL объявлено как Object.


А теперь внимательно читаем топик с самого начала...
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 95

    TopList