VB и Exel 2010

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: VB и Exel 2010

Сообщение FireFenix » 07.10.2010 (Чт) 14:20

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

При использовании CreateObject("Excel.Application") создаётся объект зарегистрированный в HKCR\Excel.Application (обычно самая последняя установленная версия)
Если нам нужно для конкретной версии, то добавляем в конце версию CreateObject("Excel.Application.12") или CreateObject("Excel.Application.14")

Ещё нужно покурить интерфейсы... если они не отличаются, то можно и 12 и 14 приводить к одному интерфейсу, если же нет - обычно пишется обёртка для работы с 2мя различными интерфейсами

Думаю так же стоит почитать книгу, которую предлагал SLLIM : Эндрю Трельсен - Модель COM и применение ATL 3.0. Эффективная разработка приложений типа клиент\сервер
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

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

Re: VB и Exel 2010

Сообщение JohnK » 07.10.2010 (Чт) 14:30

CreateObject("Excel.Application.14")

Вот это уже ответ по делу! Проверю...

Спасибо, FireFenix.
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 » 07.10.2010 (Чт) 14:57

JohnK писал(а):А теперь внимательно читаем топик с самого начала...

И что ты хочешь, чтобы я там нашёл?
Ты нигде не написал, какая ошибка возникает при CreateObject("Excel.Application"). Кроме "не работает".

У меня по "Excel.Application" создаётся всё, что нужно.

А "ответ по делу", он, конечно, по делу. Вот только тебе, насколько я понимаю, наоборот нужна не конкретная версия, а любая.
label:
cli
jmp label

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

Re: VB и Exel 2010

Сообщение JohnK » 07.10.2010 (Чт) 15:42

А "ответ по делу", он, конечно, по делу. Вот только тебе, насколько я понимаю, наоборот нужна не конкретная версия, а любая.


Если ты не понял, то мне нужно чтобы запускались и та и другая.

P.S. Ошибка 91, если тебе это поможет.
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 » 07.10.2010 (Чт) 15:52

1) "И та и другая" - это в данном контексте разве не то же самое, что "любая"?

2)
JohnK писал(а):если тебе это поможет

Мне? Мне это не надо. Это тебе надо. И помочь это должно ТЕБЕ.
И что, вот он так и пишет тебе "Ошибка 91" как только ты что-то пишешь в IDE? Вроде не маленький уже, и на форуме аж почти 900 сообщений, так какого ж фига из тебя нужно клещами выдирать, что значит "не работает"? ТЕКСТ ошибки какой?
Случаем не "Object variable or With block variable not set"? На какой строке?
Если на той, что написано в самом начале, то там у тебя Set забыт. Если на какой-то другой, то приводи код..
label:
cli
jmp label

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

Re: VB и Exel 2010

Сообщение JohnK » 07.10.2010 (Чт) 16:47

iGrok

Мне нужно создать объект Excel без привязки с помощью Project -> References и работать с ним как обычно*.

Как обычно:
Код: Выделить всё
Dim XL As New Excel.Application

XL.Workbooks.Open FileName
Set XL = XL.ActiveWorkbook.Sheets.Application
XL.Sheets("Sheet1").Select
...
XL.ActiveWorkbook.Close
Set XL = Nothing

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 » 07.10.2010 (Чт) 17:40

Всем спасибо, тему можно закрывать.
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 » 07.10.2010 (Чт) 17:42

И в чём же была проблема?

Что именно у тебя не получалось-то?
Где вылезала описанная тобой ошибка?
Если конечно не учитывать, что вот это:
Dim XL As New Excel.Application
надо заменить на
Код: Выделить всё
Dim XL As Object
Set XL = CreateObject("Excel.Application")


З.Ы. Получилось хоть?
label:
cli
jmp label

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

Re: VB и Exel 2010

Сообщение JohnK » 07.10.2010 (Чт) 21:23

В этом то и была проблема! :D

P.S. Правда под Office 2010 не проверял, но думаю что пойдет 100%
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

Пред.

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

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

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

    TopList