Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Forms, OLE, Excel - помогите  [new]
Dudkin
Member

Откуда:
Сообщений: 102
подскажите пожалуйста, кто работал с excel из формсов, как скопировать ячейку или сразу несколько строк?

пробовал так

OLE2.INVOKE_CHAR(cell, 'select');

мне вместо содержимого ячейки возвращает "-"
26 фев 08, 13:29    [5338011]     Ответить | Цитировать Сообщить модератору
 Re: Forms, OLE, Excel - помогите  [new]
Dudkin
Member

Откуда:
Сообщений: 102
воттак думаю получше будет

ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, 11);
OLE2.ADD_ARG(ArgList, 2);

cell:=OLE2.get_OBJ_property(worksheets, 'cells', ArgList);

r_t:=OLE2.INVOKE_CHAR(cell, 'select');
26 фев 08, 13:31    [5338034]     Ответить | Цитировать Сообщить модератору
 Re: Forms, OLE, Excel - помогите  [new]
Dudkin
Member

Откуда:
Сообщений: 102
переформулирую немного вопрос, как скопировать аттрибуты ячейки (шрифт,жирный, курсив, размер шрифта, границы ячейки)

заранее спасибо!
26 фев 08, 14:21    [5338447]     Ответить | Цитировать Сообщить модератору
 Re: Forms, OLE, Excel - помогите  [new]
Bombat
Member

Откуда:
Сообщений: 376
Думаю "скопировать" и "выделить" - разные вещи.
Насколько я понимаю, предложенный код выделяет ячейки, а не копирует. Для копирования необходимо вызвать метод Copy.
26 фев 08, 14:27    [5338506]     Ответить | Цитировать Сообщить модератору
 Re: Forms, OLE, Excel - помогите  [new]
Bombat
Member

Откуда:
Сообщений: 376
Dudkin
переформулирую немного вопрос, как скопировать аттрибуты ячейки (шрифт,жирный, курсив, размер шрифта, границы ячейки)

Общая схема:
1. Нужно выделить ячейку с необходимым форматом.
2. Вызвать метод Copy.
3. Выделить ячейку к которой необходимо применить формат.
4. Вызвать метод PasteSpecial с определенным набором параметров.

Вообще для того чтобы не возникало таких вопросов нужно записать макрос и посмотреть что в нем делается.
26 фев 08, 14:32    [5338550]     Ответить | Цитировать Сообщить модератору
 Re: Forms, OLE, Excel - помогите  [new]
Dudkin
Member

Откуда:
Сообщений: 102
ну не совсем copy

есть процедуры get_property и set_property, но вот попытки комбинирования этих процедур пока ничего не дают :(
26 фев 08, 14:33    [5338555]     Ответить | Цитировать Сообщить модератору
 Re: Forms, OLE, Excel - помогите  [new]
Bombat
Member

Откуда:
Сообщений: 376
Есть еще такая штука как INVOKE
26 фев 08, 14:42    [5338655]     Ответить | Цитировать Сообщить модератору
 Re: Forms, OLE, Excel - помогите  [new]
Dudkin
Member

Откуда:
Сообщений: 102
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, 11);
OLE2.ADD_ARG(ArgList, 2);

cell:=OLE2.get_OBJ_property(worksheets, 'cells', ArgList);
cell_parm:=OLE2.INVOKE_OBJ(cell, 'get_para', ArgList);

попробовал так и чета никак прям не хочет :(
26 фев 08, 14:55    [5338753]     Ответить | Цитировать Сообщить модератору
 Re: Forms, OLE, Excel - помогите  [new]
Dudkin
Member

Откуда:
Сообщений: 102
Bombat
Есть еще такая штука как INVOKE


да, все-таки все оказалось очень просто :)

OLE2.Invoke(cell2,'copy');
OLE2.Invoke(cell,'insert');
26 фев 08, 15:03    [5338810]     Ответить | Цитировать Сообщить модератору
 Re: Forms, OLE, Excel - помогите  [new]
Goldminer
Member

Откуда:
Сообщений: 553
Общая схема:

1. Получить объект "Range" (с пом. метода Invoke_obj);
2. У него есть свойство "Characters";
3. у него есть нужные Вам свойства;
4. Их много, о них проще почитать в хелпе по Excel VBA;

PS:
1. Обращать внимание на разницу метод/свойство (invoke_.../get_..._property). Разница чисто синтаксическая (понять нельзя, можно запомнить, но соблюдать нужно);
2. Ни в коем случае не надеяться на на обещанный exception ole2_error. (я его еще ни разу не видел )
26 фев 08, 15:05    [5338820]     Ответить | Цитировать Сообщить модератору
 Re: Forms, OLE, Excel - помогите  [new]
Dudkin
Member

Откуда:
Сообщений: 102
спасибо большое!
26 фев 08, 15:05    [5338821]     Ответить | Цитировать Сообщить модератору
 Re: Forms, OLE, Excel - помогите  [new]
Dudkin
Member

Откуда:
Сообщений: 102
Еще такой вопрос возник.
Мне необходимо скрыть, а затем показать excel, не подскажите, как это сделать?

строка вида

OLE2.SET_PROPERTY (worksheets, 'Visible', false);

не компилится, а строка вида

OLE2.SET_PROPERTY (worksheets, 'Visible', 1);

результата никакого не дает, попытки с Minimize и Maximize дали тот же результат
27 фев 08, 08:08    [5341585]     Ответить | Цитировать Сообщить модератору
 Re: Forms, OLE, Excel - помогите  [new]
Алымов Анатолий
Member

Откуда: Оренбург
Сообщений: 1309
Надо на само приложение свойство устанавливать:
application := OLE2.CREATE_OBJ('Excel.Application');
OLE2.SET_PROPERTY(application, 'Visible', 'True');
27 фев 08, 08:15    [5341592]     Ответить | Цитировать Сообщить модератору
 Re: Forms, OLE, Excel - помогите  [new]
=Tims=
Member [заблокирован]

Откуда:
Сообщений: 91
запиши макрос и посмотри что и как он там делает.
я всегда так делаю.
27 фев 08, 08:15    [5341593]     Ответить | Цитировать Сообщить модератору
 Re: Forms, OLE, Excel - помогите  [new]
Алымов Анатолий
Member

Откуда: Оренбург
Сообщений: 1309
Да и свойство в кавычках
27 фев 08, 08:15    [5341594]     Ответить | Цитировать Сообщить модератору
 Re: Forms, OLE, Excel - помогите  [new]
Dudkin
Member

Откуда:
Сообщений: 102
Алымов Анатолий
Надо на само приложение свойство устанавливать:
application := OLE2.CREATE_OBJ('Excel.Application');
OLE2.SET_PROPERTY(application, 'Visible', 'True');


ага, спасибо, помогло :)
27 фев 08, 08:24    [5341605]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить