I am sorry for my English  
 , I hope you will understand.
I use the package "Client_OLE2" for access to the objects, their methods and properties on the CLIENT side (Concretely I utillize COM library: CAPICOM.dll).
Problem:
I can not initialize property of object, by other object already initialized before (types are proper).
Just for example (java code and analogue PL/SQL code):
1)Get_Property():
--java/c code:
 the_obj=spreadsheet_obj.Application
--PL/SQL code:
the_obj:=Get_Obj_Property(spreadsheet_obj, 'Application');
2) Set_Property():
--java/c code:
cell.Value="Hello Excel!"
--PL/SQL code:
Set_Property(cell, 'Value', 'Hello Excel!');
3)Invoke():
--java/c code:
v_book=v_books.Open("C:\1.xls")
--PL/SQL code:
ADD_ARG(v_arglist, 'C:\1.xls');
v_book := INVOKE_OBJ(v_book, 'Open', v_argList);
It's works.
I can not write this line in PL/SQL:
--java/c code:
Signer.Certificate = Certificates.Item(1);
--PL/SQL code:
??????????????????????
Logically to use the Next:
   DECLARE
   test Client_OLE2.obj_type;
   ...
   BEGIN
   ...
   --it's works
   v_arglist := Client_OLE2.Create_Arglist; 
   Client_OLE2.Add_Arg(v_argList, 1); 
   test:=Client_OLE2.Invoke_Obj(Certificates,'Item', v_argList);
   Client_OLE2.DESTROY_ARGLIST(v_argList);
   --it's does not work
   Client_OLE2.Set_Property(Signer, 'Certificate', test);
   ...
   END;
But it does not work: "Type of the last arguments mismatch".
How can I write the line 
Signer.Certificate = Certificates.Item(1)
  in PL/SQL code?
Thanks.