Конференция "Corba" » Как удалить лист в книге Excel [Delphi, Windows]
 
  • Mr.Devil © (05.01.10 14:46) [0]
    Никак не могу удалить лишние листы из книги. Везде пишут, что так должно работать, но оно не работает :)
    Если включить видимость приложения 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 файле :)
 
Конференция "Corba" » Как удалить лист в книге Excel [Delphi, Windows]
Есть новые Нет новых   [134427   +35][b:0][p:0.002]