PROCEDURE gerar_fax IS app Client_OLE2.OBJ_TYPE; args CLIENT_OLE2.LIST_TYPE; docs CLIENT_OLE2.OBJ_TYPE; doc CLIENT_OLE2.OBJ_TYPE; ad CLIENT_OLE2.OBJ_TYPE; mm CLIENT_OLE2.OBJ_TYPE; windows CLIENT_OLE2.OBJ_TYPE; window CLIENT_OLE2.OBJ_TYPE; template_file VARCHAR2(100); -- Ficheiro template a abrir data_file VARCHAR2(100); -- Ficheiro com os dados a carregar destiny_file VARCHAR2(100); -- Ficheiro de destino wname VARCHAR2(100); BEGIN -- Ficheiros template_file := 'C:\RES\ICP - Fax.doc'; data_file := 'C:\RES\Fax.txt'; destiny_file := 'C:\omeufax.doc'; -- Argumento para o word args := CLIENT_OLE2.CREATE_ARGLIST; CLIENT_OLE2.ADD_ARG(args, template_file); -- Abrir o word app := CLIENT_OLE2.CREATE_OBJ('Word.Application'); docs := CLIENT_OLE2.GET_OBJ_PROPERTY(app, 'Documents'); CLIENT_OLE2.INVOKE(docs, 'Open', args); -- Executar o mail merge ad := CLIENT_OLE2.GET_OBJ_PROPERTY(app, 'ActiveDocument'); mm := CLIENT_OLE2.GET_OBJ_PROPERTY(ad, 'MailMerge'); CLIENT_OLE2.SET_PROPERTY(mm,'MainDocumentType',0); CLIENT_OLE2.DESTROY_ARGLIST(args); args := CLIENT_OLE2.CREATE_ARGLIST; CLIENT_OLE2.ADD_ARG(args, data_file); CLIENT_OLE2.INVOKE(mm, 'OpenDataSource', args); CLIENT_OLE2.INVOKE(mm, 'Execute', null); -- Falta o Find and replace que está no VB6... -- Fazer o active Window /* windows := CLIENT_OLE2.GET_OBJ_PROPERTY(app, 'Windows'); CLIENT_OLE2.DESTROY_ARGLIST(args); args := CLIENT_OLE2.CREATE_ARGLIST; CLIENT_OLE2.ADD_ARG(args, 1); window := CLIENT_OLE2.INVOKE_OBJ(windows, 'Item',args); CLIENT_OLE2.INVOKE(window, 'Activate'); doc := CLIENT_OLE2.GET_OBJ_PROPERTY(window, 'Document'); wname := CLIENT_OLE2.GET_OBJ_PROPERTY(doc, 'Name'); */ -- Fechar o template CLIENT_OLE2.INVOKE(ad, 'Close', 0); -- Fazer o save as ad := CLIENT_OLE2.GET_OBJ_PROPERTY(app, 'ActiveDocument'); CLIENT_OLE2.DESTROY_ARGLIST(args); args := CLIENT_OLE2.CREATE_ARGLIST; CLIENT_OLE2.ADD_ARG(args, destiny_file); CLIENT_OLE2.INVOKE(ad,'SaveAs',args); -- Fechar o original CLIENT_OLE2.SET_PROPERTY(app,'Visible',1); END;