Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Excel: OleFunction & etc.

1.8K
01 июня 2005 года
Azaze1
102 / / 08.01.2005
Привет всем.
Есть, к примеру, две открытые через builder excel-книги. Не подскажете, как можно скопировать лист из одной в другую? Или, например, другая ситуация: опять две книги, в одной выделен какой-то набор ячеек - как сие дело можно копирнуть в другую книгу?
Если я ничего не путаю, первую ситуацию можно наполовину разрулить чем-то вроде
 
Код:
my_worksheet.OleFunction("Copy");

Но такая строка просто создаст пустую книгу и скопирует лист туда. А надо именно в уже открытую книгу... Если не ошибаюсь, после Copy можно указать ещё два параметра (подробнее см. Excel9.olb, лежит в MicrosoftOffice), но что-то не получается разобраться в этом. Помогите, кто может.
1
02 июня 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Azaze1
Привет всем.
Есть, к примеру, две открытые через builder excel-книги. Не подскажете, как можно скопировать лист из одной в другую? Или, например, другая ситуация: опять две книги, в одной выделен какой-то набор ячеек - как сие дело можно копирнуть в другую книгу?
Если я ничего не путаю, первую ситуацию можно наполовину разрулить чем-то вроде
 
Код:
my_worksheet.OleFunction("Copy");

Но такая строка просто создаст пустую книгу и скопирует лист туда. А надо именно в уже открытую книгу... Если не ошибаюсь, после Copy можно указать ещё два параметра (подробнее см. Excel9.olb, лежит в MicrosoftOffice), но что-то не получается разобраться в этом. Помогите, кто может.


Возможно вот так:

 
Код:
my_worksheet.Exec(Function("Copy")<<WideString("test.xls"));
1.8K
02 июня 2005 года
Azaze1
102 / / 08.01.2005
Цитата:
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 "Ошибка".
Значицца путь верный, только вот не те параметры передаются =/
1.8K
02 июня 2005 года
Azaze1
102 / / 08.01.2005
И ещё... Кто-нибудь может подсказать, как можно просмотреть .olb файл не через builder (delphi не подойдёт). Может есть какие программки для такого дела?
246
03 июня 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by Azaze1
И ещё... Кто-нибудь может подсказать, как можно просмотреть .olb файл не через builder (delphi не подойдёт). Может есть какие программки для такого дела?


Непонятно зачем смотреть .olb если пользуешься Variant.Exec() - смотри Word|НеJIn|Visualbasic. Ну если всеже так надо...напусти на .olb tlibimp.exe и смотри.

1.8K
04 июня 2005 года
Azaze1
102 / / 08.01.2005
Копирование ячеек. Вроде работает. Вот отрывко кода, кому интересно (сам механизм)%)
 
Код:
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);

2Gizmo: за совет по поводу VB спасибо, как-то сразу не догадался %)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог