DEF VAR LIST-PLAN AS C INIT "PLAN1,PLAN2". DEF VAR OBJ-SERVICE AS COM-HANDLE. DEF VAR OBJ-DESKTOP AS COM-HANDLE. DEF VAR OBJ-WORK AS COM-HANDLE. DEF VAR OBJ-PLAN AS COM-HANDLE EXTENT 40. DEF VAR OBJ-WORKCOL AS COM-HANDLE. DEF VAR OBJ-COL AS COM-HANDLE. DEF VAR CC AS RAW. DEF VAR OLINBORDA AS COM-HANDLE. def var loop as int. def var iLinha as int. def var iCol as int. CREATE "com.sun.star.ServiceManager" OBJ-SERVICE. OBJ-DESKTOP = OBJ-SERVICE:createinstance("com.sun.star.frame.Desktop"). OBJ-WORK = OBJ-DESKTOP:loadComponentFromURL("file:///c:/teste.ots","_blank",0,cc). def temp-table tt-relatorio field codigo as int field nome as char format "X(30)" field data as date. do loop = 1 to 10. create tt-relatorio. assign tt-relatorio.codigo = loop tt-relatorio.nome = "Fulano-" + string(loop) tt-relatorio.data = today + loop. end.
Automação BrOffice via COM — dica de robustez pro seu código Ivone, não ficou claro no post qual erro específico você está enfrentando com esse trecho — se puder complementar com a mensagem de erro exata, a galera consegue apontar direto a causa. Enquanto isso, esse é o mesmo tipo de automação COM discutido neste outro tópico aqui do fórum (BrOffice/LibreOffice via `com.sun.star.ServiceManager`), que cobre as causas mais comuns de falha: sessão sem desktop interativo, LibreOffice não registrado pro usuário do Windows que roda o processo, e bitness 32/64 diferente entre Progress e LibreOffice. Vale conferir se o seu sintoma bate com algum desses. Um ponto adicional específico do seu código: os objetos COM criados (`OBJ-SERVICE`, `OBJ-DESKTOP`, `OBJ-WORK`, e o array `OBJ-PLAN`) não estão sendo liberados com `RELEASE OBJECT` no final — em rotina que roda repetidamente (ex.: dentro de um loop de geração de relatório), isso tende a vazar handle COM e degradar a estação com o tempo. Vale sempre fechar com `RELEASE OBJECT nome NO-ERROR.` pra cada `com-handle` criado, mesmo em caminho de erro.