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

Откуда: Москва
Сообщений: 263
всем привет

не скажите, как в Forms в ячейку открытого Excel-документа добавить примечание?

я пытаюсь так...


-- открыл документ
    objExcelApp := OLE2.CREATE_OBJ('Excel.APPLICATION'); 
    ole2.set_property(objExcelApp, 'Visible', TRUE);    
    workbooks := OLE2.GET_OBJ_PROPERTY(objExcelApp, 'Workbooks');	  
    ArgList:=OLE2.create_arglist;
    OLE2.add_arg(ArgList, 'C:\Book.xls');
    OLE2.invoke(workbooks,'open', ArgList);
    OLE2.destroy_arglist(ArgList);
    ce_ws := OLE2.get_obj_property(objExcelApp, 'ActiveSheet');

-- выбрал ячейку
    ArgList:=OLE2.CREATE_ARGLIST;	
    OLE2.ADD_ARG(ArgList, pos1);
    OLE2.ADD_ARG(ArgList, pos2);	  	
    cell:=OLE2.get_OBJ_property(ce_ws, 'cells', ArgList);
    OLE2.Invoke(cell,'select');
    OLE2.DESTROY_ARGLIST(ArgList);

-- пытаюсь добавить примечание
OLE2.set_property(cell, 'AddComment', '!!!!!');


примечание создается, но значения в нем нет
17 мар 09, 10:59    [6936251]     Ответить | Цитировать Сообщить модератору
 Re: Forms Добавить примечание в Excel  [new]
ORA_Worker
Member

Откуда: Москва
Сообщений: 263
...
17 мар 09, 12:57    [6937263]     Ответить | Цитировать Сообщить модератору
 Re: Forms Добавить примечание в Excel  [new]
-=APS=-
Member

Откуда: Киев
Сообщений: 737
...
    ole2.invoke(cell, 'AddComment');
    v_comment := ole2.get_obj_property(v_cell, 'Comment');
    v_arglist := ole2.create_arglist;
    ole2.add_arg(v_arglist, chr(10)||'Текст комментария');
    ole2.invoke(v_comment, 'text', v_arglist);
    ole2.destroy_arglist(v_arglist);
    ole2.release_obj(v_comment);
...
17 мар 09, 14:18    [6937994]     Ответить | Цитировать Сообщить модератору
 Re: Forms Добавить примечание в Excel  [new]
ORA_Worker
Member

Откуда: Москва
Сообщений: 263
-=APS=-, спасибо за помощь.

Теперь другая бяка получается...

вот в если ячейки объединенные, то предложенный вариант не проходит...

  
OLE2.ADD_ARG(ArgList, 'A'||pos1);
OLE2.ADD_ARG(ArgList, 'T'||pos1);	
cell:=OLE2.get_OBJ_property(ce_ws, 'range', ArgList);	 
OLE2.Invoke(cell, 'select');
OLE2.Invoke(cell, 'merge');	
OLE2.DESTROY_ARGLIST(ArgList);
17 мар 09, 15:41    [6938741]     Ответить | Цитировать Сообщить модератору
 Re: Forms Добавить примечание в Excel  [new]
-=APS=-
Member

Откуда: Киев
Сообщений: 737
Действительно не проходит? :)

Если честно, лень проверять... Запусти эксель, в нем сделай запись макроса и проделай все, что планируешь, руками (выдели ячейки, объедини их, припиши коммент ...) - а потом посмотри исходник макроса, там хоть и великий бейсик, но разобраться можно :)
17 мар 09, 15:53    [6938825]     Ответить | Цитировать Сообщить модератору
 Re: Forms Добавить примечание в Excel  [new]
ORA_Worker
Member

Откуда: Москва
Сообщений: 263
-=APS=-, ну я так, в общем, и делаю... с детищем Б.Гейтса у меня пока не выходит сладить...
17 мар 09, 15:56    [6938848]     Ответить | Цитировать Сообщить модератору
 Re: Forms Добавить примечание в Excel  [new]
ORA_Worker
Member

Откуда: Москва
Сообщений: 263
-=APS=-, а в твоем примере переменная v_cell - это аналог cell или как-то по-другому ей значение присваивается?
17 мар 09, 16:18    [6939062]     Ответить | Цитировать Сообщить модератору
 Re: Forms Добавить примечание в Excel  [new]
ORA_Worker
Member

Откуда: Москва
Сообщений: 263
v_comment := ole2.get_obj_property(v_cell, 'Comment');

вот эта строчка возвращает "0", когда ячейка "объединенная"...
17 мар 09, 16:38    [6939278]     Ответить | Цитировать Сообщить модератору
 Re: Forms Добавить примечание в Excel  [new]
-=APS=-
Member

Откуда: Киев
Сообщений: 737
Вроде, работает...
	declare
	  v_cell ole2.obj_type;
	  v_arglist ole2.list_type;
	  v_comment ole2.obj_type;
	begin
		v_arglist := ole2.create_arglist;
		ole2.add_arg(v_arglist, 'A1');
		ole2.add_arg(v_arglist, 'C3');
		v_cell := ole2.get_obj_property(worksheet, 'range', v_arglist);
		ole2.destroy_arglist(v_arglist);
		ole2.invoke(v_cell, 'select');
		ole2.invoke(v_cell, 'merge');
		ole2.release_obj(v_cell);
		
		v_arglist := ole2.create_arglist;
		ole2.add_arg(v_arglist, 'A1');
		ole2.add_arg(v_arglist, 'A1');
		v_cell := ole2.get_obj_property(worksheet, 'range', v_arglist);
		ole2.destroy_arglist(v_arglist);
		
    ole2.invoke(v_cell, 'AddComment');
    v_comment := ole2.get_obj_property(v_cell, 'Comment');
    v_arglist := ole2.create_arglist;
    ole2.add_arg(v_arglist, chr(10)||'Текст комментария');
    ole2.invoke(v_comment, 'text', v_arglist);
    ole2.destroy_arglist(v_arglist);
    
    ole2.release_obj(v_comment);		
    ole2.release_obj(v_cell);
	end;
17 мар 09, 17:47    [6939841]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить