Форум: "Начинающим";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];
ВнизСкопировать строки в 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]Сори.....
Вот сдесь так :
VarExcel,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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.039 c