-
столкнулся с такой проблемой, что надо выводить данные за период, на каждую дату отдельный лист, у меня есть шаблон на 1 листе, так как период разный то получается разное количество листов в Excel, вот как сделать чтобы листы добавлялись и шаблон копировался, листы я добавлять разобрался, но они добавляются вперед и не могу понять их имена как к ним обратиться?
-
> не могу понять их имена
Имена новых листов по умолчанию те самые, которые ты видишь при их ручном добавлении в раб.книгу.
Обращаться к листам можно и по именам и по их индексам в списке Sheets.
-
> Имена новых листов по умолчанию те самые, которые ты видишь
> при их ручном добавлении в раб.книгу.
> Обращаться к листам можно и по именам и по их индексам в
> списке Sheets.
sheet:=xl.workbooks[1].worksheets['Ëèñò'+inttostr(i)];
так?
-
Листы добавляю так:
Worksheets("01").Copy After:=Worksheets("01")
Worksheets("01 (2)").Name = adddays(i)
где "01" - имя листа, который нужно размножить, а adddays(i) - массив добавляемых имён
-
xl.workbooks[1].worksheets['лист'+inttostr(i)]:=xl.workbooks[1].worksheets['Лист1'];
говорит член группы не найден
-
xl.Workbooks[1].Worksheets('"'+inttostr(DayOf(dt1.Date)+i-1)+'"').CopyAfter:= xl.Workbooks[1].Worksheets('"'+inttostr(DayOf(dt1.Date)+i-1)+'"');
xl.Workbooks[1].Worksheets('"'+inttostr(DayOf(dt1.Date)+i-1)+'"').Name :='"'+inttostr(DayOf(dt1.Date)+i)+'"' ;
почему не получается? член группы не найден, можете расписать а то я чего то не могу это понять
-
xl.ActiveWorkbook.Worksheets.Item[такой-то лист]
-
> xl.ActiveWorkbook.Worksheets.Item[такой-то лист]
теперь ругается на CopyAfter
-
> ругается на CopyAfter
Правильно ругается - нет такого метода у такого-то объекта
-
распишите пожалуйста как сделать уже в Делфи, не могу я понять как сделать чтобы:
1 добавился лист
2 копировал содержимое предыдущего
-
-
> Дмитрий (21.04.09 11:21) [7]
> > xl.ActiveWorkbook.Worksheets.Item[такой-то лист]
> теперь ругается на CopyAfter
Пример из VBA.
After:=Worksheets("01")
это параметр.
-
> Пример из VBA. After:=Worksheets("01") это параметр.
я пользуюсь макросами, но этот не работает там
Народ помогите пожалуйста не могу понять как, мозг с учебой и работой уже кипит,
пользуюсь я не компонентами а создаю все в ручную, многое вообще разница
xl:=CreateOleObject('Excel.Application');
xl.Visible:=true;
xl.Workbooks.Open('C:\AB\forma.xls');
вот начинается и потом
надо только копировать первый лист и в конец его и назвать по дню
-
Sheets("лист1").Select
Sheets("лист1").Copy Before:=Sheets(1)
Sheets("лист1 (2)").Select
Sheets("лист1 (2)").Move Before:=Sheets(3)
вот это как в делфи перекинуть особо интересует с пробелом в Copy Before Move Before
-
все проблема решена, я сделал 31 лист (максимально дней в месяце) и потом видимость фэлш делаю за те даты которые не нужны
-
> сделал 31 лист (максимально дней в месяце) и потом видимость
> фэлш
Это называется "удалил гланды через задний проход")
-
> Сергей М. © (22.04.09 13:17) [15]
> > сделал 31 лист (максимально дней в месяце) и потом видимость
> > фэлш
> Это называется "удалил гланды через задний проход")
Это называется "После долгих мучений сделать всё по програмистски - сделал всё по нормальному" - imho очень верное и быстрое решение :)
> вот это как в делфи перекинуть особо интересует с пробелом в Copy Before Move Before
Еще раз вникнуть в это -
After:=Worksheets("01")
это параметр.Нужно рассмотреть внимательно метод
Copy
в классе
TExcelWorksheet
из
ExcelXP.pas
.
В нашем случае
Copy
выглядит так:
procedure Copy(Before: OleVariant); overload;
procedure Copy(Before: OleVariant; After: OleVariant); overload;
procedure Copy(Before: OleVariant; After: OleVariant; lcid: Integer); overload;
Таким образом нужно как параметр подставить ссылку на нужный лист :)