Не работает под Office2000

Программирование на Visual Basic for Applications
Mishel
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 14.09.2004 (Вт) 17:55

Не работает под Office2000

Сообщение Mishel » 22.09.2004 (Ср) 9:15

1. Вопрос

Имеется приблизительно такой код:
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = Excel.Application
Set xlBook = xlApp.Workbooks.Open(xxxxx)
Set xlSheet = xlBook.ActiveSheet
xlApp.Visible = True

Соответственно на моем компе стоит Office2002, подключена библиотека Microsoft Excel 10.0 Object Library
и все работает.
Запускаю на другом компе, там стоит Office2000,
в результате нет ни ошибки, но и не запускается Excel,
что нужно сделать чтобы программа и там запускалась?

2. Вопрос

Как узнать из кода, открыт Excel или нет,
и соответственно нужно ли делать xlApp.Close

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.09.2004 (Ср) 12:16

2. Выполни GetObject (, "Excel.Application")
Если ошибка, значит экселя нет, иначе есть.

Ещё, а разве Офис2002 - не 11.0? Десятым же был ОфисХР?
Или это одно и то же? :oops:
Изображение

Mishel
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 14.09.2004 (Вт) 17:55

Сообщение Mishel » 22.09.2004 (Ср) 12:58

Да, одно и тоже XP это 2002 и соответственно 10 библиотека, но вопрос не в этом почему не работает на 2000 или нельзя на библитеках с меньшим номером.
А на счет проверки я от так проверяю:
If xlApp Is Excel.Application Then
вроде работает

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.09.2004 (Ср) 13:14

Попробуй использовать позднее связываение. Т.е. не подключать библиотеку, а использовать CreateObject.
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.09.2004 (Ср) 14:15

Mishel писал(а):А на счет проверки я от так проверяю:
If xlApp Is Excel.Application Then
вроде работает

Вау, круто. А я и сам не знал, что так можно :oops:
Но всё равно, имхо лучше "If xlApp Is Nothing Then"
Изображение

Mishel
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 14.09.2004 (Вт) 17:55

Сообщение Mishel » 22.09.2004 (Ср) 14:29

If xlApp Is Nothing Then
А обратное как?
только не else, код какой-то кривой получается

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.09.2004 (Ср) 14:34

Mishel писал(а):If xlApp Is Nothing Then
А обратное как?
только не else, код какой-то кривой получается

If Not (xlApp Is Nothing) Then

скобки необязательны, но с ними как-то нагляднее :-)
Изображение

Mishel
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 14.09.2004 (Вт) 17:55

Сообщение Mishel » 22.09.2004 (Ср) 14:35

Сам нашел:
If (xlApp Is Nothing) = False Then

А как же все таки второй вопрос,
как узнать закрыли Excel или нет?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.09.2004 (Ср) 14:52

Mishel писал(а):Сам нашел:
If (xlApp Is Nothing) = False Then

А как же все таки второй вопрос,
как узнать закрыли Excel или нет?

Дык точно так же:
Код: Выделить всё
Set xlApp = Excel.Application
If xlApp Is Nothing Then
    'уже закрыли
End If
Изображение


Вернуться в VBA

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 56

    TopList