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

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

Excel2000 [D7, Win2k]


nstur ©   (2006-01-25 12:04:00) 

Подскажите как сделать активным лист в Excel из Делфи.
У меня шаблон из 4-х листов. Необходимо поочередно заполнять их.
Пробую выполнить:
p:= ''КредитОМТС';
OleVariant(ExcelReport.Application).Sheets.Select(p);
выдает ошибку.

Подскажите, как активизировать лист?


nstur   (2006-01-26 08:03:00) [1]

Алексей Петухов.Я всегда стараюсь сначало посмотреть, как происходит работа в макросах. Но реализация макроса не всегда совпадает с TExcelApplication

ShirsonСпасибо.
Немного изменил Ваш пример и все получилось.
OleVariant(NsExcel.ActiveWorkbook.Sheets.Item[3]).select;

eugieБольшое спасибо за пример. Помогло разобраться.


eugie   (2006-01-26 05:03:00) [2]

Определитесь, какой способ работы с excel вы хотите использовать: через раннее или позднее соединение - от этого будет зависеть и способ обращения к листам книги. Мой пример - для раннего соединения, можно, конечно и для позднего "нарисовать"...


Fay   (2006-01-26 00:39:00) [3]

2 Shirson ©   (26.01.06 0:00) [8]
> Вообще-то и к Sheets так не обращаются.
В смысле?


Shirson   (2006-01-26 00:00:00) [4]


> nstur   (25.01.06 12:33) [2]
> Прошу прощения, но Sheets нет метода Activate


Вообще-то и к Sheets так не обращаются.

uses comobj;

procedure TForm1.Button1Click(Sender: TObject);
var
xl:variant;
begin
xl:=CreateOleObject('Excel.Application');
xl.visible:=true;
xl.workbooks.add;
xl.activeworkbook.Sheets.item[3].select;
end;


Shirson   (2006-01-26 00:00:00) [5]


> nstur   (25.01.06 12:33) [2]
> Прошу прощения, но Sheets нет метода Activate


Вообще-то и к Sheets так не обращаются.

uses comobj;

procedure TForm1.Button1Click(Sender: TObject);
var
xl:variant;
begin
xl:=CreateOleObject('Excel.Application');
xl.visible:=true;
xl.workbooks.add;
xl.activeworkbook.Sheets.item[3].select;
end;


Алексей Петухов   (2006-01-25 20:07:00) [6]

Вообще вариантов одного и тогоже же дйствия с этими майкрософтовскими серверами может быть несколько.
Самый быстрый способ найти хотябы один вариант это подсмотреть как сам Excel это делает. Т.е. нажать в Excele кнопку "Начать запись макроса" протом сделать необходимые действия и окончить запись, затем посмотреть на получившийся код в VB и переписать, адаптировав, в ObjectPascal.


eugie   (2006-01-25 13:24:00) [7]

пардон:
vExSheet:=TexcelWorkSheet.Create([владелец]);

for i:=1 to [количество листов в книге]-1 do
begin
vExSheet.ConnectTo(vExApp.Worksheets[ i] as _WorkSheet)
....
[операции с объектами на листе]
....
end;


eugie   (2006-01-25 13:05:00) [8]

vExSheet:=TexcelWorkSheet.Create([владелец]);

for i:=1 to [количество листов в книге]-1 do
begin
 vExSheet.ConnectTo(vExApp.Worksheets[1] as _WorkSheet)
 ....
 [операции с объектами на листе]
 ....
end;


neat   (2006-01-25 12:47:00) [9]

Я только немного работал с Excel, извиняюсь не проверил, взял пример из
справочника www.delphiword.narod.ru. Там же

Excel.Workbooks[i].ActiveSheet.Name := ...


nstur   (2006-01-25 12:33:00) [10]

Прошу прощения, но Sheets нет метода Activate.


neat   (2006-01-25 12:10:00) [11]

Excel.WorkBooks[i].Sheets[j].Activate;


Наверх

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