Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Excel-совместимость... Чтоб приложение работало со всеми Excel 
:(
    Опции темы
Kurt
Дата 15.9.2003, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: нет
Всего: 36



Народ!
Пишу приложение, которое, в частности работает с Excel.
А как бы мне сделать, чтоб мое приложение работало для всех версий Microsoft Office?
А то в WinXP работает (ввиду объективных обстоятельств программирование происходит в WinXP), а в Win2000 - нет...



--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
Mephisto
Дата 16.9.2003, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 2
Всего: 34



Что именно не работаетconfused.gif?
PM   Вверх
RAN
Дата 16.9.2003, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

Репутация: нет
Всего: 6



WinXP или OfficeXP? Используй Excel.Application. И при написании проги, пользуйся объектами Excel97, например.

P.S. Мне известно лишь одно неудобство. Но это относится к Word. В Word2002 и более ранних версиях по разному индексируются строки и столбцы таблиц. Возникает необходимость при обращении к ячейки проверять версию Word'а.
PM MAIL ICQ   Вверх
Kurt
Дата 16.9.2003, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: нет
Всего: 36



Конечно, я имел ввиду OfficeXP.
А можно как-то взять объекты Excel97, не устанавливая его?


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
RAN
Дата 16.9.2003, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

Репутация: нет
Всего: 6



Ты не понял. OfficeXP поддерживает всё, что есть в 97. Но у него есть много нового, по сранению с 2000. А в 2000 много нового, по сравнению с 97. Я тебе говорю, что надо использовать только то, что есть в 97. Это кстати отноcится и к ActiveX. Не бери новых ActiveX в проект. Иначе, даже если ты будешь использовать древнии интерфейсы, прога всё равно будет выдавать ошибку: "Семейство не поддерживается".

Найди доку по автоматизации Office97 (а лучше книгу. новую будет уже сложно купить), а использовать можешь любой Office. Устанавливать ничего не надо
PM MAIL ICQ   Вверх
Kurt
Дата 16.9.2003, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: нет
Всего: 36



RAN, я понимаю каково это - объяснять самоучке (коим я в VB и являюсь!),
но вот смотри:
Код
Private Sub Command1_Click()
' Declare object variables for Microsoft Excel,
' application workbook, and worksheet objects.
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

' Assign object references to the variables. Use
' Add methods to create new workbook and worksheet
' objects.
Set xlApp = New Excel.Application
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets.Add

' Close Microsoft Excel with the Quit method.
xlApp.Quit

' Release the objects.
Set xlApp = Nothing
Set xlBook = Nothing
Set xlSheet = Nothing
End Sub

Это пример из help by VB5.
Там сказано - подключить Microsoft Excel Object Library.
OK. У меня Microsoft Excel 10.0 Object Library.
Все работает.
Перехожу в Office2000 ( просто загружаюсь в Win2000, там у меня Office2000), запускаю EXE-шник:
Error! Ошибка работы приложения!
Если не влом, расскажи как быть?

..А книгу я обязательно куплю! smile.gif
P.S. Кстати, в OfficeXP, после работы этого примера, остается Excel-процесс.
Но, по-моему, это уже обсуждается на этом форуме...




--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
RAN
Дата 16.9.2003, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

Репутация: нет
Всего: 6



Плата за совместимоть. От Object Library придётся отказаться. Это внесёт некоторые неудобства в написание кода. По нажатию на точку не будет появляться список методов и свойств, нельзя использовать константы (придётся писать их значения вместо имён).

Меняй все типы из Microsoft Excel 10.0 Object Library на Object, а саму Library отключай обратно. У тебя будет такой код
Код

Private Sub Command1_Click()
' Declare object variables for Microsoft Excel,
' application workbook, and worksheet objects.
Dim xlApp As Object
Dim xlBook As Object
Dim xlSheet As Object

' Assign object references to the variables. Use
' Add methods to create new workbook and worksheet
' objects.
Set xlApp = CreateObject("Exсel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets.Add

' Close Microsoft Excel with the Quit method.
xlApp.Quit

' Release the objects.
Set xlApp = Nothing
Set xlBook = Nothing
Set xlSheet = Nothing
End Sub


Могу предложить тебе писать прогу с подключённой Library, чтоб использовать все прелести IDE. А перед созданием exe править код, меняя все типы на Object. У тебя получатся release и debug версии (простите за C-ишный жаргон smile.gif )
PM MAIL ICQ   Вверх
Kurt
Дата 16.9.2003, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: нет
Всего: 36



Danke, все понял...


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
RAN
Дата 16.9.2003, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

Репутация: нет
Всего: 6



Процесс Excel должен уничтожаться после того, как ты присвоишь Nothing всем объектам (xlApp, xlBook и т.д.). Остаётся он в памяти обычно из-за самой распространённой ошибки. Не обрабатывают исключительные ситуации, при которых до =Nothing дело не доходит. Обязательно пиши On Error Goto перед использованием COM-сервера. Это же не твоя программа, там всё что угодно может произойти. А твоё дело по On Error сообщить пользователю, что Excel подкачал, извините. И выполить = Nothing для всех объектов.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.1116 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.