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