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

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

Скопировать строки в Excel [D7, XP]


Страницы:   1 2

Neket ©   (2007-04-25 11:50:00) 

Копирую строки Row :-) из одной книги в другую таким образом:


Var
Excel,XL,XLApp,Nah:Variant;
begin
Excel:= CreateOleObject('Excel.Application');
XL:=Excel.Workbooks.Open(FName);// Открываю существующий файл

XLApp:=CreateOleObject('Excel.Application');
XLNah:=XLApp.Workbooks.Add();// Формирую новый
//------
XLApp.Workbooks[1].WorkSheets[1].Range[XLApp.Workbooks[1].WorkSheets[1].Cells.It em[k, 1], XLApp.Workbooks[1].WorkSheets[1].Cells.Item[k,EmptyParam]].copy(Excel.Workbooks[ 1].WorkSheets[2].Range[Excel.Workbooks[1].WorkSheets[2].Cells.Item[k, 1], Excel.Workbooks[1].WorkSheets[2].Cells.Item[k,EmptyParam]]);


Вылетает ошибка - "Метод Copy из Класса Range завершо неверно"


iXT   (2007-04-25 15:06:00) [1]

> > Undeclared identifier XLNah
>
> означает, что переменная не объявлена с таким именем

Это для меня перевод? :))))))
Это ягенерировал сообщения компилятора.


umbra   (2007-04-25 14:54:00) [2]


> variant

variant вполне подходит, а


> Undeclared identifier XLNah

означает, что переменная не объявлена с таким именем


Neket   (2007-04-25 14:52:00) [3]

Ааа точно
Var
XL,XLApp,XLNah,srcRange, dstRange:OLEVariant;


Это я случайно...


iXT   (2007-04-25 14:48:00) [4]

Почему опять variant?

Undeclared identifier XLNah


Neket   (2007-04-25 14:36:00) [5]

Все... Всем спасибо...
Сделал так...
Var
XL,XLApp,Nah,srcRange, dstRange:Variant;
begin
XLApp:=CreateOleObject('Excel.Application');
XL:=XLApp.Workbooks.Open(FName);// Открываю существующий файл
XLNah:=XLApp.Workbooks.Add();// Формирую новый
..........
srcRange := XL.Worksheets[1].Cells.Rows[k];
dstRange := XLNah.Worksheets[1].Cells.Rows[k];
srcRange.Copy(dstRange);


umbra   (2007-04-25 13:34:00) [6]


> R.Copy(EmptyParam);

Если работать с поздним связыванием, то все эти многочисленные EmptyParam вместо необязательных аргументов просто не нужны


umbra   (2007-04-25 13:32:00) [7]

2 iXT ©   (25.04.07 13:17) [16]

я не читал эти посты :). Там ошибка из-за неправильного указания диапазона, скорее всего. Указывать для индекса ячейки EmptyParamкак-то, по-моему, некузяво.


umbra   (2007-04-25 13:29:00) [8]


> Это если текст.... А если все... И Форматы тоже?

srcRange.Copy(dstRange);

При этом желательно, чтобы лист с исходным диапазоном был активным. По идее это не обязательно, но я несколько раз натыкался на эти грабли.


iXT   (2007-04-25 13:17:00) [9]

> А откуда?

После
> R.Copy(EmptyParam);
Я полагаю что R должен всетаки уйти в буфер

[12] umbra ©   (25.04.07 12:48)
в буфер обмена он копирует, если не указать диапазона назначения. а в сабже он указан.


> R:=XL.WorkSheets[1].Range[XL.WorkSheets[1].Cells.Item[k, 1], XL.WorkSheets[1].Cells.Item[k, 245]];
> R.Copy(EmptyParam);

???


Neket   (2007-04-25 13:00:00) [10]

dstRange.Value := srcRange.Value;
Это если текст.... А если все... И Форматы тоже?


umbra   (2007-04-25 12:58:00) [11]

srcRange := XL.Worksheets[1].Cells.Rows[k];
dstRange := XLNah.Worksheets[1].Cells.Rows[k];
dstRange.Value := srcRange.Value;


Neket   (2007-04-25 12:50:00) [12]

2 Umbra: А если я это оформлю в одно Excel
Т.е. Как то так:
Var
Excel,XL,XLApp,Nah:Variant;
begin
XLApp:=CreateOleObject('Excel.Application');
XL:=XLApp.Workbooks.Open(FName);// Открываю существующий файл
XLNah:=XLApp.Workbooks.Add();// Формирую новый
//------


Так как тогда нада переписать
XLApp.Workbooks[1].WorkSheets[1].Range[XLApp.Workbooks[1].WorkSheets[1].Ce lls.It em[k, 1], XLApp.Workbooks[1].WorkSheets[1].Cells.Item[k,EmptyParam]].copy(Excel.Workbooks[  1].WorkSheets[2].Range[Excel.Workbooks[1].WorkSheets[2].Cells.Item[k, 1], Excel.Workbooks[1].WorkSheets[2].Cells.Item[k,EmptyParam]]);???????????

2 iXT: :-))) А откуда?


umbra   (2007-04-25 12:48:00) [13]


> Не должен. Он же в буфер копирует.
>

в буфер обмена он копирует, если не указать диапазона назначения. а в сабже он указан.


iXT   (2007-04-25 12:46:00) [14]

Вот мне кажется:
1. что перед Paste надо выделить куда вставляешь
2. Paste оформлен не верно

3. Выкинуть XLApp2


iXT   (2007-04-25 12:43:00) [15]

> [8] umbra ©   (25.04.07 12:38)

Не должен. Он же в буфер копирует.


iXT   (2007-04-25 12:40:00) [16]

Сделай это сперва в VB(В Excel), там и справку найти можно. А потом уже через OLE


umbra   (2007-04-25 12:38:00) [17]

кажется мне, что такой метод копирования работает в пределах одного Excel.Application


Neket   (2007-04-25 12:36:00) [18]

Пытаюсь также и через БО сделать
Var
R:OLEVariant;
..........
R:=XL.WorkSheets[1].Range[XL.WorkSheets[1].Cells.Item[k, 1], XL.WorkSheets[1].Cells.Item[k, 245]];
R.Copy(EmptyParam);
XLApp2.Paste(XLApp2.Range[XLApp2.Cells.Item[k, 1],EmptyParam],EmptyParam);


Всеравно вылетает ошибка когда пытаюсь вставить.
Может что-то неправельно делаю?


Neket   (2007-04-25 12:31:00) [19]

Это чтобы всю строку скопировать...
Если поставить к пример 100 то ситуация анологична


umbra   (2007-04-25 12:26:00) [20]


> XLApp.Workbooks[1].WorkSheets[1].Cells.Item[k, EmptyParam]

это что за EmptyParam?


Страницы:   1 2

Наверх

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