worksheets := ole2.invoke_OBJ(workbooks, 'Worksheets');
But i tried with
worksheets := ole2.GET_OBJ_PROPERTY(workbooks, 'Worksheets');
but of no use...still getting the same error...any one there to help me
out??? Is there any way to modify the code???
Here is my code:
DECLARE
-- Declare handles to OLE objects
application ole2.obj_type;
workbooks ole2.obj_type;
workbook ole2.obj_type;
worksheet ole2.obj_type;
worksheets ole2.obj_type;
cell ole2.obj_type;
-- Declare handles to OLE argument lists
args ole2.list_type;
check_file text_io.file_type;
no_file exception;
PRAGMA EXCEPTION_INIT (no_file, -302000);
cell_value varchar2(2000);
BEGIN
-- Check the file can be found, if not exception no_file will be raised
check_file := TEXT_IO.FOPEN('C:\test.xls','R');
TEXT_IO.FCLOSE(check_file);
application:= ole2.create_obj('Excel.Application');
workbooks := ole2.GET_OBJ_PROPERTY(application, 'Workbooks');
worksheets := ole2.invoke_OBJ(workbooks, 'Worksheets');
-- Open the required workbook
args:= ole2.create_arglist;
ole2.add_arg(args, 'C:\test.xls');
workbook := ole2.GET_OBJ_PROPERTY (workbooks, 'Open', args);
ole2.destroy_arglist(args);
-- Open worksheet Sheet1 of that Workbook
args:= ole2.create_arglist;
ole2.add_arg(args, 'Sheet1');
worksheet := ole2.GET_OBJ_PROPERTY (worksheets, 'Worksheets', args);
ole2.destroy_arglist(args);
-- Get value of cell A1 of worksheet Sheet1
args:= ole2.create_arglist;
ole2.add_arg(args, 1);
ole2.add_arg(args, 1);
cell:= ole2.GET_OBJ_PROPERTY (worksheet, 'Cells', args);
ole2.destroy_arglist(args);
cell_value :=ole2.get_char_property(cell, 'Value');
message(cell_value);
ole2.invoke(application,'Quit');
-- Release the OLE2 object handles
ole2.release_obj(application);
ole2.release_obj(workbooks);
ole2.release_obj(workbook);
ole2.release_obj(worksheets);
ole2.release_obj(cell);
EXCEPTION
WHEN no_file THEN
MESSAGE('File not found.');
END;
--
Posted via http://dbforums.com
Hierarchy as follows:
APPLICATION
WORKBOOKS
WORKBOOK
WORKSHEETS
WORKSHEET
Try rewriting you code to
application:= ole2.create_obj('Excel.Application');
workbooks := ole2.GET_OBJ_PROPERTY(application, 'Workbooks');
-- Open the required workbook
args:= ole2.create_arglist;
ole2.add_arg(args, 'C:\test.xls');
workbook := ole2.GET_OBJ_PROPERTY (workbooks, 'Open', args);
ole2.destroy_arglist(args);
worksheets := ole2.invoke_OBJ(workbook, 'Worksheets');
..
..
..
See examples on Metalink for more info.
M
Manikandan <membe...@dbforums.com> wrote in message news:<2650961.1...@dbforums.com>...
my code is:
DECLARE
-- Declare handles to OLE objects
application ole2.obj_type;
workbooks ole2.obj_type;
workbook ole2.obj_type;
worksheet ole2.obj_type;
cell ole2.obj_type;
-- Declare handles to OLE argument lists
args ole2.list_type;
Check_file text_io.file_type;
no_file exception;
PRAGMA exception_INIT (no_file, -302000);
cell_value varchar2(2000);
beGIN
-- Check the file can be found, if not exception no_file will be raised
Check_file := TEXT_IO.FOPEN('C:\test.XLS','R');
TEXT_IO.FCLOSE(Check_file);
application:= ole2.create_obj('Excel.Application');
workbooks := ole2.get_obj_property(application, 'Workbooks');
-- Open the required workbook
args:= ole2.create_arglist;
ole2.add_arg(args, 'C:\test.XLS');
workbook := ole2.invoke_obj(workbooks, 'Open', args);
ole2.destroy_arglist(args);
-- Open worksheet Sheet1 of that Workbook
args:= ole2.create_arglist;
ole2.add_arg(args, 'Sheet1');
worksheet := ole2.get_obj_property(workbook, 'Worksheets', args);
ole2.destroy_arglist(args);
-- Get value of cell A1 of worksheet Sheet1
args:= ole2.create_arglist;
ole2.add_arg(args, 1);
ole2.add_arg(args, 1);
cell:= ole2.get_obj_property(worksheet, 'Cells', args);
ole2.destroy_arglist(args);
cell_value :=ole2.get_char_property(cell, 'Value');
message(cell_value);
args:=ole2.create_arglist;
ole2.add_arg(args,'C:\Ora.prn');
ole2.add_arg(args,'Formatted text(Space delimited)(*.prn)|*.prn|');
ole2.invoke(worksheet,'SaveAs',args);
ole2.destroy_arglist(args);
message('Hi am passed');
ole2.invoke(application,'Quit');
message('Hi am still passed');
-- Release the OLE2 object handles
ole2.release_obj(cell);
ole2.release_obj(worksheet);
ole2.release_obj(workbook);
ole2.release_obj(workbooks);
ole2.release_obj(application);
message('Hi am in safer side');
exception
WHEN no_file THEN
MESSAGE('file not found.');
WHEN OTHERS THEN
MESSAGE(sqlerrm);
PAUSE;
FOR i IN 1 .. tool_err.nerrors LOOP
MESSAGE(tool_err.message);
PAUSE;
tool_err.pop;
END LOOP;
END;
Thanks
You cannot return a row from Excel into your Forms PL/SQL.
M
Manikandan <membe...@dbforums.com> wrote in message news:<2655236.1...@dbforums.com>...
Thanks
In Excel, go to Tools > MAcros > Visual Basic Editor
In the VBA editor, do View > Object Browser.
This should show you the objects and any methods associated with them.
Apart from that, i used to just use the VBA help to get by.
M
Manikandan <membe...@dbforums.com> wrote in message news:<2658981.1...@dbforums.com>...
Thanks