![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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;