Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.ru

 
acana корм для собак купить в спб
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Как удалить лист в книге Excel [Delphi, Windows]


Mr.Devil ©   (05.01.10 14:46

Никак не могу удалить лишние листы из книги. Везде пишут, что так должно работать, но оно не работает :)
Если включить видимость приложения Excel, то оно спрашивает действительно ли я хочу удалить лист (хотя предупреждения отключены). Если ответить "Да", лист удаляется.
А если видимость Excel не включать,то новый лист в книге остается.
Может я как-то не так отключаю предупреждения? Помогите разобраться, что я делаю не так?
Excel 2003

function ProcessPrice(Price_File_Name: string): boolean;
var
 EA1: TExcelApplication;
 EWB1: TExcelWorkbook;
 EWS1: TExcelWorksheet;
 i,j,k,L: integer;    // счетчики
begin
 EWS1:=TExcelWorksheet.Create(nil);
 EWS1.ConnectKind:=ckAttachToInterface;
 EWB1:=TExcelWorkbook.Create(nil);
 EWB1.ConnectKind:=ckAttachToInterface;
 L:=LOCALE_USER_DEFAULT;
 EA1:=TExcelApplication.Create(nil);
 EA1.ConnectKind:=ckNewInstance;
 EA1.AutoQuit:=True;
 EA1.DisplayAlerts[L]:=False;  // отключаем предупреждения
 EA1.Visible[L]:=False;
 EA1.Connect;
 try
   EWB1.ConnectTo(EA1.Workbooks.Open(Price_File_Name,// Filename: WideString;
     2, // UpdateLinks: OleVariant; 2 - never update
     False, // ReadOnly: OleVariant;
     EmptyParam, // Format: OleVariant;
     EmptyParam, // Password: OleVariant;
     EmptyParam, // WriteResPassword: OleVariant;
     EmptyParam, // IgnoreReadOnlyRecommended: OleVariant;
     EmptyParam, // Origin: OleVariant;
     EmptyParam, // Delimiter: OleVariant;
     EmptyParam, // Editable: OleVariant;
     EmptyParam, // Notify: OleVariant;
     EmptyParam, // Converter: OleVariant;
     False, // AddToMru: OleVariant;
     EmptyParam, // Local: OleVariant;
     EmptyParam, // CorruptLoad: OleVariant;
     L));
 except
...
 end;
 EA1.ActiveWorkbook.Sheets.Add(EmptyParam,EmptyParam,1,EmptyParam,L);  // новый лист добавляется, но не удаляется.
//  (EA1.ActiveWorkbook.Sheets[1] as _Worksheet).Name:='Listeg3';
 (EA1.ActiveWorkbook.Sheets[1] as _Worksheet).Delete(L);  // ВОТ ЗДЕСЬ НИЧЕГО НЕ ПРОИСХОДИТ
//  (EA1.ActiveWorkbook.Sheets[4] as _Worksheet).Delete(L);
// закрываем иксель
 EA1.ActiveWorkbook.Close(xlSaveChanges,EmptyParam,EmptyParam,L);
 EA1.Application.Quit;
 EWS1.Free;
 EWB1.Free;
 EA1.Free;
 Result:=True;
end;


Mr.Devil ©   (05.01.10 21:07[1]

Проблема решена, всем спасибо :)))


Mr.Devil ©   (05.01.10 21:08[2]

дело было в кривом xls файле :)


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


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо