Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.13;
Скачать: CL | DM;

Вниз

Скопировать строки в Excel   Найти похожие ветки 

 
Neket   (2007-04-25 11:50) [0]

Копирую строки 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 завершо неверно"


 
Neket   (2007-04-25 11:56) [1]

Сори.....
Вот сдесь так :
Var
Excel,XL,XLApp,XLNah:Variant


 
iXT ©   (2007-04-25 12:09) [2]

Здается мне OleVariant


 
umbra ©   (2007-04-25 12:09) [3]

зачем два экселя?


 
iXT ©   (2007-04-25 12:16) [4]

> зачем два экселя?

Тоже подумал. Открыл два файлика (xls). Глядь в диспетчер. И там два EXCEL. Ну фиг с ними. Может так ему лучше :). Но это же не смертельно (если тачка позволяет, конечно). Он жалуется на COPY


 
umbra ©   (2007-04-25 12:26) [5]


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

это что за EmptyParam?


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

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


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

Пытаюсь также и через БО сделать
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);


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


 
umbra ©   (2007-04-25 12:38) [8]

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


 
iXT ©   (2007-04-25 12:40) [9]

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


 
iXT ©   (2007-04-25 12:43) [10]

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

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


 
iXT ©   (2007-04-25 12:46) [11]

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

3. Выкинуть XLApp2


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


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

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


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

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:58) [14]

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


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

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


 
iXT ©   (2007-04-25 13:17) [16]

> А откуда?

После
> 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);

???


 
umbra ©   (2007-04-25 13:29) [17]


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

srcRange.Copy(dstRange);

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


 
umbra ©   (2007-04-25 13:32) [18]

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

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


 
umbra ©   (2007-04-25 13:34) [19]


> R.Copy(EmptyParam);

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


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

Все... Всем спасибо...
Сделал так...
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);


 
iXT ©   (2007-04-25 14:48) [21]

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

Undeclared identifier XLNah


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

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


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


 
umbra ©   (2007-04-25 14:54) [23]


> variant

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


> Undeclared identifier XLNah

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


 
iXT ©   (2007-04-25 15:06) [24]

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

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



Страницы: 1 вся ветка

Текущий архив: 2007.05.13;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.049 c
11-1159283659
Моторокер
2006-09-26 19:14
2007.05.13
Int2Str vs. IntToStr


2-1177419225
sat
2007-04-24 16:53
2007.05.13
бинарная куча


15-1176311578
Bambuk
2007-04-11 21:12
2007.05.13
Обработка видео. С чего начать изучать?


3-1172558403
Merry
2007-02-27 09:40
2007.05.13
Запрос на отбор данных с пустым значенем


2-1175758467
iviom
2007-04-05 11:34
2007.05.13
Footer в DBGridEh