![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Добрый день программерам.
Подскажите как переключаться между листами? В моем идиётском учебнике этого нет. Измучался. То есть я заношу значения в какие то ячейки потом нажимаю button и чтоб эксель перескочил на другой лист и можно было туда данные вносить.. Чет никак. Ну и новые создавать.. |
|
#2
|
|||
|
|||
|
Есть у кого толковая книга по программированию excel?
Везде не до писывают недоговаривают. Мне в подробностях. |
|
#3
|
||||
|
||||
|
В большинстве случаев помогает простой финт. Запустить запись макроса в экселе, понажимать нужные кнопки,элементы и посмотреть что эксель наваял при этом в макросе. Аналогичные свойства и объекты вызвать из дельфи.
![]() |
|
#4
|
|||
|
|||
|
А "стандартный" способ не подойдет ?
Типа : Код:
//Сделать лист Excel активным
function Excel_SetListActive(Excel : variant; NumList : integer) :variant;
begin
Result:=UnAssigned;
if not VarIsEmpty(Excel) then begin
if NumList>0 then begin
if NumList<=Excel.WorkSheets.Count then begin
Result:=Excel.ActiveWorkBook.WorkSheets[NumList];
Result.Select;
end;
end;
end;
end;
//Получить ссылку на лист Excel по номеру
function Excel_GetList(Excel : Variant; NumList : integer) : Variant;
begin
Result:=UnAssigned;
if not VarIsEmpty(Excel) then begin
if (NumList>0) and (NumList<=Excel.ActiveWorkBook.WorkSheets.Count) then begin
Result:=Excel.ActiveWorkBook.WorkSheets[NumList];
end;
end;
end;
//Добавить лист в книгу Excel
function Excel_AddLis(Excel : Variant) : Variant;
begin
Result:=UnAssigned;
if not VarIsEmpty(Excel) then begin
Result:=Excel.ActiveWorkBook.WorkSheets.Add;
end;
end;
Последний раз редактировалось roamer, 10.09.2010 в 21:48. |
|
#5
|
|||
|
|||
|
Вот попробуем. Не знал такой способ.
|
|
#6
|
|||
|
|||
|
Только как этим пользоваться?
Что такое Excel а что такое Numllist? Numlist это я понимаю номер листа. С какого начинается с 0 или с 1? То есть можно написать так. Excel_SetListActive(1,2); Перейдешь на второй лист? |
|
#7
|
|||
|
|||
|
Я так пробовал.
ExlPrint.Sheets.item('Лист2').Select; Пишет член гурппы не найжен. |
|
#8
|
|||
|
|||
|
>Что такое Excel
--- Переменная, где хранится ссылка на сам Excel (как OLE Automation Server). >а что такое Numllist? >Numlist это я понимаю номер листа. --- Да. >С какого начинается с 0 или с 1? --- С единицы. >То есть можно написать так. >Excel_SetListActive(1,2); >Перейдешь на второй лист? --- Да, но 1-й параметр - это ссылка на Excel. Пользоваться примерно так : Код:
function Excel_Open(YesVisible,YesAddWorkBooks : byte) : Variant;
begin
Result := UnAssigned;
Result:=CreateOleObject('Excel.Application');
Result.Visible:=YesVisible;
if YesAddWorkBooks>0 then begin
Result.Workbooks.Add(); //добавить рабочую книгу
end;
end;
function Excel_OpenFile(fn : string) : Variant;
//Открыть файл Excel
begin
Result:=UnAssigned;
fn:=Trim(fn);
if length(fn)>0 then begin
if FileExists(fn) then begin
Result:=Excel_Open(1,0);
if not VarIsEmpty(Result) then begin
Result.WorkBooks.Open(fn);
end;
end;
end;
end;Код:
Var
ListExcel, Excel : variant;
begin
Excel := Excel_OpenFile('C:\123.xls');
ListExcel := UnAssigned;
if not VarIsEmpty(Excel) then begin
ListExcel := Excel_GetList(Excel,2); //получаем ссылку на 2-й лист
if not VarIsEmpty(ListExcel) then begin //проверяем ссылку на корректность
ListExcel := Excel_SetListActive(Excel,2); //делаем лист-2 активным
end
else begin
ShowMessage('Ошибка. Лист N 2 не существует (может быть)');
ListExcel := Excel_AddList(Excel); //добавляем лист
if not VarIsEmpty(ListExcel) then begin //проверяем ссылку на корректность
ListExcel := Excel_SetListActive(Excel,2); //делаем новый лист активным
end
else begin
ShowMessage('Ошибка. Новый Лист не добавлен');
end;
end;
end
else begin
ShowMessage('Ошибка при загрузке файла '+fn);
end;
end;
Последний раз редактировалось roamer, 10.09.2010 в 23:15. |
|
#9
|
|||
|
|||
|
Благодарю! Супер!
|