Excel: OleFunction & etc.
Есть, к примеру, две открытые через builder excel-книги. Не подскажете, как можно скопировать лист из одной в другую? Или, например, другая ситуация: опять две книги, в одной выделен какой-то набор ячеек - как сие дело можно копирнуть в другую книгу?
Если я ничего не путаю, первую ситуацию можно наполовину разрулить чем-то вроде
Код:
my_worksheet.OleFunction("Copy");
Но такая строка просто создаст пустую книгу и скопирует лист туда. А надо именно в уже открытую книгу... Если не ошибаюсь, после Copy можно указать ещё два параметра (подробнее см. Excel9.olb, лежит в MicrosoftOffice), но что-то не получается разобраться в этом. Помогите, кто может.
Цитата:
Originally posted by Azaze1
Привет всем.
Есть, к примеру, две открытые через builder excel-книги. Не подскажете, как можно скопировать лист из одной в другую? Или, например, другая ситуация: опять две книги, в одной выделен какой-то набор ячеек - как сие дело можно копирнуть в другую книгу?
Если я ничего не путаю, первую ситуацию можно наполовину разрулить чем-то вроде
Но такая строка просто создаст пустую книгу и скопирует лист туда. А надо именно в уже открытую книгу... Если не ошибаюсь, после Copy можно указать ещё два параметра (подробнее см. Excel9.olb, лежит в MicrosoftOffice), но что-то не получается разобраться в этом. Помогите, кто может.
Привет всем.
Есть, к примеру, две открытые через builder excel-книги. Не подскажете, как можно скопировать лист из одной в другую? Или, например, другая ситуация: опять две книги, в одной выделен какой-то набор ячеек - как сие дело можно копирнуть в другую книгу?
Если я ничего не путаю, первую ситуацию можно наполовину разрулить чем-то вроде
Код:
my_worksheet.OleFunction("Copy");
Но такая строка просто создаст пустую книгу и скопирует лист туда. А надо именно в уже открытую книгу... Если не ошибаюсь, после Copy можно указать ещё два параметра (подробнее см. Excel9.olb, лежит в MicrosoftOffice), но что-то не получается разобраться в этом. Помогите, кто может.
Возможно вот так:
Код:
my_worksheet.Exec(Function("Copy")<<WideString("test.xls"));
Цитата:
Originally posted by kot_
Возможно вот так:
Возможно вот так:
Код:
my_worksheet.Exec(Function("Copy")<<WideString("test.xls"));
...exception class EOleException with message 'Метод Copy из класса
Worksheet завершён неверно'... Так что не пойдёт. =(
Вообще в excel9.olb этот метод расписан как
Код:
HRESULT _stdcall Copy([in, optional] VARIANT Before, [in, optional] VARIANT After, [in, lcid] long lcid );
т.е. после "Copy" в строке my_worksheet.OleFunction("Copy"), можно
записать ещё два параметра типа Varaint: Before и After. Осталось
догадаться, что это =) Пробовал уакзывать листы, книги, просто excel-
приложения - не катит. На всё одно -
exception class EOleException with message "Ошибка".
Значицца путь верный, только вот не те параметры передаются =/
И ещё... Кто-нибудь может подсказать, как можно просмотреть .olb файл не через builder (delphi не подойдёт). Может есть какие программки для такого дела?
Цитата:
Originally posted by Azaze1
И ещё... Кто-нибудь может подсказать, как можно просмотреть .olb файл не через builder (delphi не подойдёт). Может есть какие программки для такого дела?
И ещё... Кто-нибудь может подсказать, как можно просмотреть .olb файл не через builder (delphi не подойдёт). Может есть какие программки для такого дела?
Непонятно зачем смотреть .olb если пользуешься Variant.Exec() - смотри Word|НеJIn|Visualbasic. Ну если всеже так надо...напусти на .olb tlibimp.exe и смотри.
Код:
Range.ClearArgs();
my_range = my_worksheet.Exec(Range << "A1:S6");
my_range.Exec(Copy);
new_range = new_worksheet.OlePropertyGet("Range","A1");
new_range.Exec(PasteSpecial << -4163);
my_range = my_worksheet.Exec(Range << "A1:S6");
my_range.Exec(Copy);
new_range = new_worksheet.OlePropertyGet("Range","A1");
new_range.Exec(PasteSpecial << -4163);
2Gizmo: за совет по поводу VB спасибо, как-то сразу не догадался %)