Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отчеты в Excel [D5, Win95/98, WinME]


andrey_pst ©   (2002-07-16 14:17:00) 

Вопрос вот в чем:
Как сделать копию листа в эту-же книгу.

Такой код работает нормально:
//№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№
...
interface
...
private
{ Private declarations }
IExcelApp : Excel97._Application;
IExcelWB : Excel97._Workbook;
IExcelWS : Excel97._Worksheet;
DIExcelR : Excel97.Range;
DIExcelF : Excel97.Font;
public
{ Public declarations }
end;
...
implementation
...
const
xlLCID = LOCALE_USER_DEFAULT;
...
procedure TFMainForm.BtnSendClick(Sender: TObject);
var
...
begin
...
IExcelApp := CoExcelApplication.Create; // загрузили сервер
IExcelApp.Visible[xlLCID] := true; // отобразили сервер
...
// добавили книгу
IExcelWB := IExcelApp.Workbooks.Open("c:\sql\fd.xlt", EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, false, xlLCID);
IExcelWB.Activate(xlLCID); // активировали книгу
IExcelWS := IExcelWB.Worksheets.Item["Лист1"] as Excel97._Worksheet; // получили ссылку на лист
IExcelWS.Activate(xlLCID); // активировали лист
...
IExcelWB := nil; // освободили книгу
IExcelApp.Visible[xlLCID] := false; // скрыли сервер
IExcelApp.Quit; // закрыли сервер
IExcelApp := nil; // освободили сервер
...
end;
//№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№

А вот если нужно сделать копию первого листа в эту же книгу, например так:

...

IExcelWS := IExcelWB.Worksheets.Item["Лист1"] as Excel97._Worksheet; // получили ссылку на лист
IExcelWS.Activate(xlLCID); // активировали лист
// копирование листа
IExcelWS.Copy(EmptyParam, EmptyParam, xlLCID);
...

то получается не копия листа в этой-же книге, а копия листа в новой книге.
Попробовал подставлять значения вместо EmptyParam - получил гору матюков об ошибке.

Как быть ?


ПИТОН   (2002-07-16 14:41:00) [1]

VBA дает такой код:
Sheets("Лист1").Copy Before:=Sheets(1)


Наверх

Титульная страница Поиск, карта сайта Написать письмо