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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение в Excel2000 и Excel2002, не сохраняется :( 
V
    Опции темы
Litta
Дата 22.5.2006, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Приветствую !!!
У меня такая проблемка - в приложении инфа сохраняется в файл excel - разрабатывал дома и с excel 2002 всё работало нормально... Но когда попробовал запустить на работе на excel 2000 выдало ошибку Access violation at adress 9CF4BF59... 
Ошибка вылетает при сохранении, вот так оно выглядит: 

ExcelApp.Workbooks[1].SaveAs(FileName, EmptyParam, EmptyParam, EmptyParam, false, false, xlNoChange, EmptyParam, EmptyParam, 
EmptyParam, EmptyParam, EmptyParam, icid); 

 smile 
Я так полагаю, что дело в совместимости версий - не подскажете ли, чего надо дописать или наоборот убрать ??? 
PM MAIL   Вверх
Albinos_x
Дата 22.5.2006, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



думаю проблема не в этом...
если делаешь через компоненты, то в этом можно убедиться набрав:
Код

Excel2000.ExcelWorkbook1.SaveAs(


проблема может быть в переменной FileName... 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Litta
Дата 22.5.2006, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Excel2000 - это название компонента ExcelApplication или особенность для 2000-го ??? У меня просто сейчас возможности проверить нет, завтра на работе посмотрю...
А с переменной FileName - что может быть не так ??? Путь ??? Просто дома-то работает всё на ура...
А на работе - вылетает эта ошибка, а потом при закрытии самой проги - выдаётся сообщение о сохранении файла под именем Книга1 и если согласиться, то в файле всё данные четко записываются, как надо... 
PM MAIL   Вверх
Albinos_x
Дата 22.5.2006, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



нет... просто когда одна и та же функция объявлена в нескольких подключёных модулях, то чтобы при обращении к фунции срабатывала нужная функция, необходимо указывать модуль... вот этот Excel2000 и есть обращение к конкретному модулю...
количество параметров и параметры такие же у 2000 как и у ХР (2002), я проверял...

А с переменной FileName - эта переменная OleVariant - а у этого типа данных нелады с русскими буквами... отсюда и возможные ошибки могут вылетать...

а если бы была проблема с несовместимостью, то вылетало бы что-то вроде следующего: "Method ... Not Supported Automatically Object"
  

Это сообщение отредактировал(а) Albinos_x - 22.5.2006, 20:19


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Litta
Дата 22.5.2006, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Т.е. следует попробовать указывать путь используя только англицкие буквы ?
Я, кстати, пробовал на работе изменить SaveAs параметры и когда сделал все (кроме имени файла конечно и последнего icid) EmptyParam-ами вылетела ошибка про variant, правда я не записал smile 
И ещё, может ли эта проблема быть связана с выбором версии офиса при установке самого Delphi ??? 
PM MAIL   Вверх
Albinos_x
Дата 22.5.2006, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



Цитата(Litta @  22.5.2006,  20:32 Найти цитируемый пост)
Т.е. следует попробовать указывать путь используя только англицкие буквы ?

желательно...

Цитата(Litta @  22.5.2006,  20:32 Найти цитируемый пост)
Я, кстати, пробовал на работе изменить SaveAs параметры и когда сделал все (кроме имени файла конечно и последнего icid) EmptyParam-ами вылетела ошибка про variant, правда я не записал

странно... у меня всё нормально работает...

Цитата(Litta @  22.5.2006,  20:32 Найти цитируемый пост)
И ещё, может ли эта проблема быть связана с выбором версии офиса при установке самого Delphi ??? 

врят ли.... у меня работают приложения, которые давно ещё под 2000 делал и в ХРшном и в 2003... и наоборот...ХРшные работают и на 2000 и на 2003... 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Litta
Дата 22.5.2006, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ладно, завтра попробую поменять путь... Надеюсь поможет... 
PM MAIL   Вверх
Albinos_x
Дата 22.5.2006, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



ну... если что... заходи smile 
бумс разбираться... 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Litta
Дата 24.5.2006, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



С путём ничего не получилось smile
Посмотрел в uses модуля и увидел там ExcelXP, попробовал удалить и написать Excel2000  smile  - Excel2000 остался, но ExcelXP всё равно добавилось - это как я понимаю из-за того, что при установке delphi я XP выбирал... Ничё так и не заработало...
Пробовал посмотреть через Excel2000. ...  - но там какие-то константы, типы - я в этом совсем  smile  
PM MAIL   Вверх
Albinos_x
Дата 24.5.2006, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



код процедуры сохранения в студию smile  


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Litta
Дата 24.5.2006, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Итак, код-с :

 
Код

 icid := LOCALE_SYSTEM_DEFAULT;
  ExcelApp.AutoQuit := true;
  ExcelApp.Visible[icid] := false;
  ExcelApp.AutoConnect := true;
  ExcelApp.Workbooks.Add(EmptyParam, icid);
  EWs.ConnectTo(ExcelApp.ActiveWorkBook.ActiveSheet as _Worksheet);
  ExcelApp.ActiveWorkbook.ActiveSheet;

// потом записываю инфу в файло, например
 EWs.Range['A1',EmptyParam].Value2 :='Руководитель предприятия _______________';
//Бла-бла-бла

  ExcelApp.Workbooks[1].SaveAs(FileName, EmptyParam, EmptyParam, EmptyParam,
                               false, false, xlNoChange, EmptyParam, EmptyParam,
                               EmptyParam, EmptyParam, EmptyParam, icid);

  EWs.Disconnect;
  ExcelApp.Quit;
  ExcelApp.Disconnect;


Сразу скажу, что всё работает, на ХР !!!
А то как-то раз код написал, а чел грит, что такое работать не может !!!
Да как же не может если всё работает !!!  smile  

Это сообщение отредактировал(а) Girder - 19.9.2006, 17:20
PM MAIL   Вверх
Albinos_x
Дата 24.5.2006, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



что стоит перед ExcelApp.Workbooks[1].SaveAs(...
2 команды? 


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Litta
Дата 24.5.2006, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



 EWs - это компонент Worksheet
А //Бла-бла-бла - это просто я так обозначил, что там ещё инфу записываю  smile  
PM MAIL   Вверх
Albinos_x
Дата 24.5.2006, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 15
Всего: 108



procedure SaveAs( FileName:OleVariant ; FileFormat:OleVariant ; Password:OleVariant ; WriteResPassword:OleVariant ; 
ReadOnlyRecomended:OleVariant ; CreateBackUp:OleVariant ; AccesMode:XLSaveAsAccessMode ; ConflictResolution:OleVariant ; AddtoMru:OleVariant ; 
TextCodePage:OleVariant ; TextVisualLayout:OleVariant ; lcid:Integer)

FileName - Имя файла в котором сохраняется книга, если имя и путь не указан, то книга сохранятся в текущем каталоге. (String)
FileFormat - формат файла (Integer)
Password - Пароль для открытия файла (String)
WriteResPassword - Пароль для изменения файла (String)
ReadOnlyRecomended - рекомендовать доступ только для чтения. (Boolean)
CreateBackUp - всегда создать резервный копию (Boolean)
ConflictResolution - способ разрешения конфликтов между пользователями
AddtoMRU - Boolean - добавить файл в список недавно использованых (Boolean)
AccesMode - режим доступа к файлу и может принимать значения:
- xlNoChange - не изменять ранее установленный режим
- xlExclusive - исключительный доступ пользователя к файлу. При этом если файл был в это время открыт другим пользователем, то ему будет предложено сохраниться под другим именем.
- xlShared - свободный доступ


так должно работать:
Код
...
ExcelApp.Workbooks[1].SaveAs(FileName, EmptyParam, EmptyParam, EmptyParam,
                                                   EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, 
                                                   EmptyParam, EmptyParam, 0);
...


похоже я не туда копал.... у вас один лишний параметр оттуда и ошибка

  

Это сообщение отредактировал(а) Albinos_x - 24.5.2006, 20:12


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Litta
Дата 24.5.2006, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Пасиба !!!
Завтра попробую !!! 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

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

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


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

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

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


 




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


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

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