Bonjour,

Windows Server 2008 R2 Enterprise 64-bit
Forms [64 bits] Version 11.1.2.1.0 (Production)
Microsoft Office 2010

Problème : le programme s'arrête à Client_OLE2.Get_Obj_Property!

Après débogage, le prog. s'arrête à la ligne "workbooks := Client_OLE2.Get_Obj_Property(application, 'Workbooks');" et je pourrais plus fermer la fenêtre FMX!!!

- J'ai trouvé ce code et les fichiers nécessaires ICI

- @sheikyerbouti : J'ai même testé ton code http://sheikyerbouti.developpez.com/..._edit_docs.htm et s'est arrêté à la ligne "MyDocuments:=client_ole2.GET_OBJ_PROPERTY(MyApplication, 'Documents');" sachant que la variable MyApplication contient 1.

- Je beaucoup cherché sur le net (2 jours), j'ai lu dans les forums et les docs mais sans trouver aucune solution!!!
- Ma librairie webutil fonctionne correctement ds tous mes autres prog. et même dans le FMB contenant ce code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
DECLARE 
	application   Client_OLE2.Obj_Type; 
	workbooks     Client_OLE2.Obj_Type; 
	workbook      Client_OLE2.Obj_Type; 
	worksheets    Client_OLE2.Obj_Type; 
	worksheet     Client_OLE2.Obj_Type;
	worksheet2    Client_OLE2.Obj_Type;	
	cell 					Client_OLE2.OBJ_TYPE;
	args 					Client_OLE2.OBJ_TYPE;
	cell_value 		varchar2(100);
	num_wrkshts		NUMBER;
	wksht_name		VARCHAR2(250);
	eod 					boolean:=false;
	j  						integer:=1; 
	v_fName 			VARCHAR2(250);
BEGIN 
	-- Get the name of the file to open
	--v_fName := 'D:\MyDevelopment\Forms\Samples\WebUtil\Read_Excel\planets3.xls';
	v_fName := WebUtil_File.File_Open_Dialog(
							directory_name => 'C:\'
							--,file_name => Get_Form_Property(:System.Current_form,Form_Name)||'.xls'
							,File_Filter => null
							,Title => 'Select Client filename to Open.'
					);
 
	IF ( v_fName IS NOT NULL ) THEN 
 
		-- The following sets up communication with the excel spreadsheet
		-- --------------------------------------------------------------
		-- Open the OLE application
		application := Client_OLE2.create_obj('Excel.Application'); 
		-- Keep the application hidden
		Client_OLE2.set_property(application,'Visible','false');
 
		workbooks := Client_OLE2.Get_Obj_Property(application, 'Workbooks');
		args := Client_OLE2.CREATE_ARGLIST;
 
		-- Open the selected File
		-- ----------------------
		Client_OLE2.add_arg(args,v_fName); 
		workbook := Client_OLE2.GET_OBJ_PROPERTY(workbooks,'Open',args);
		Client_OLE2.destroy_arglist(args);
 
		worksheets := Client_OLE2.GET_OBJ_PROPERTY(workbook, 'Worksheets');
 
		-- Get number of worksheets
		-- ------------------------
		num_wrkshts := Client_OLE2.GET_NUM_PROPERTY(worksheets, 'Count');
		worksheet := Client_OLE2.GET_OBJ_PROPERTY(application,'activesheet');
 
		--Go to the first record
		go_block('planets'); 
		first_record; 
 
		loop
				If :system.record_status <> 'NEW' then
		         create_record;
				end if;
 
		exit when eod;
 
			for k in 1..3 loop  --3 fields per record
				args:= Client_OLE2.create_arglist;
				Client_OLE2.add_arg(args, j);
				Client_OLE2.add_arg(args, k);
				cell:= Client_OLE2.get_obj_property(worksheet, 'Cells', args);
				Client_OLE2.destroy_arglist(args);
				cell_value :=Client_OLE2.get_char_property(cell, 'Value');
 
				if upper(cell_value) = 'EOD' then
					eod:=true;
					Message('End of Data');
					exit;
				end if;
 
		--Could be done this way also -> 
 
		/*if k =1 then
			:dept.deptno:=cell_value;
		end if;
 
		if k =2 then
			:dept.dname:=cell_value;
		end if;
 
		if k =3 then
			:dept.loc:=cell_value;
		end if;	
		*/
 
				--Less code this way ->
				copy(cell_value,name_in('system.cursor_item'));
				next_item;
 
			end loop; --for
 
			j:=j+1;
		end loop;--main loop
 
		-- Release the Client_OLE2 object handles
		IF (cell IS NOT NULL) THEN 
			Client_OLE2.release_obj(cell);
		END IF;
		IF (worksheet IS NOT NULL) THEN 
			Client_OLE2.release_obj(worksheet);
		END IF;
		IF (worksheets IS NOT NULL) THEN 
			Client_OLE2.release_obj(worksheets);
		END IF;
		IF (worksheet2 IS NOT NULL) THEN 
			Client_OLE2.release_obj(worksheet2);
		END IF;
		IF (workbook IS NOT NULL) THEN 
			Client_OLE2.release_obj(workbook);
		END IF;
		IF (workbooks IS NOT NULL) THEN 
			Client_OLE2.release_obj(workbooks);
		END IF;
		Client_OLE2.invoke(application,'Quit');
		Client_OLE2.release_obj(application);
	ELSE
		Message('No File selected.');
		message(' ');
		RAISE Form_Trigger_Failure;
	END IF;
END;
De l'aide svp!

Cordialement