
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.198] |
![]() |
|
![]() |
Сообщ.
#1
,
|
|
Здрасте!
Я хочу скопировать строку таблицы Excel с первого листа и перенести ее на другой лист. Но я не пойму, что происходит когда ставлю метод "Copy" : ![]() ![]() procedure TForm1.oleWordOpen(); var exelPath:olevariant; // путь к документу Excel. exel,elist,elist2:variant; begin exelPath:='D:\2008.xls'; try exel:=CreateOleObject('Excel.Application'); exel.workbooks.open(exelPath); elist:=exel.workbooks[1].worksheets['Лист1'];//первый лист elist2:=exel.workbooks[1].worksheets['Лист2'];//Второй лист exel.visible:=true; exel.DisplayAlerts:=false; except ShowMessage('Невозможно открыть приложение Excel'); exit; end; elist.rows[3].select; {********************************} {Вот здесь непойму, что я сделал?} {Я чего нибудь скопировал? } {********************************} elist.rows[3].copy; end. Если скопировал строку, то как с ней дальше обращаться? Я могу активировать второй лист книги, могу выделить в нем строку или ячейку: ![]() ![]() elist2.Activate; // выделяется 4 ячейка в первом столбце второго листа. Даже записать в нее что-то возможно. elist2.range['A4'].select; // или // выделяется 4 строка elist2.rows[4].select; Но как всю строку из "Лист1" перенести в "Лист2" незнаю. Уже 3 день мучаюсь... В Excele -самом, макрос написал, все работает, но его методы здесь не проходят практически: ![]() ![]() Rows("16:16").Select Selection.Copy Sheets("Лист2").Select Rows("1:1").Select ActiveSheet.Paste В инете по моему случаю мне ничего найти не удалось... ![]() |
Сообщ.
#2
,
|
|
|
Лень это в Delphi проверить, но примерно так:
![]() ![]() exel.workbooks[1].worksheets['Лист1'].Rows['1:1'].Copy; exel.workbooks[1].worksheets['Лист2'].Rows['1:1'].Paste; |
![]() |
Сообщ.
#3
,
|
|
adem:
Цитата 'Method Paste' not supported by automation object.//Однако.. (process stopped.Use Step or Ран, //но нафик уже это надо, в моем положении ![]() Вот я не могу понять что надо сделать, что б поддерживался метод "Paste" ![]() Наверняка, что-то есть. Раз Бейсик это может, то почему бы это невмочь Делфи? В данный момент, я смог добиться, что бы "програмка" смогла "поячеечно" копировать и вставлять в другой лист, т.е. циклом перебирать строку и каждую ячейку копировать в другой лист. Хотелось бы обойтись без этого гемороя, но чуствую придется, потому как еще больше вопросов с копированием целой строки предвидится: Там в строке попадаюстся ячейки с датами, а обычным, моим написанным методом, типа, как я хочу сделать, даты выводятся ввиде десятичного числа (или как там это число, типа, 39544 называется) и надо его переводить в "формат времени", если бы получилось моя идея "копи&паста" всей строки, то результат бы был очень странным и не устроит мое начальство, однозначно(хотело видеть,допустим 01.01.2008, а видит, типа, 36789). А "поячеечно", я хотя бы могу контролировать ячейки с датами. Наверняка есть способ и эту "занозу" обойти, но у меня знаний маловато ![]() Но все-таки "оч хочеца" узнать, а можно ли целыми строками манипулировать при работе Delphi-Excel ... |
![]() |
Сообщ.
#4
,
|
|
Все получилось.
Проанализировав код VB (первый пост), пришел к выводу, что обращаться к методу Paste "от имени" rows (или range), в том виде как я хотел, нельзя. Короче вот с такой концовкой, написанного в первом посте кода, все работает: ![]() ![]() ................. elist.rows[3].select; elist2.Activate; elist2.rows['1:1'].select; exel.activeSheet.paste; // exel:=CreateOleObject('Excel.Application'); end. |