Boa noite a todos Estou desenvolvendo um programa em Progress que lê um modelo de documento (Word) com marcadores e (usando dados do EMS) gera um documento .DOCX para o cliente. O programa já está quase pronto, porem ainda há alguns problemas: 1 – Para os marcadores que estão no corpo do documento, a substituição do marcador por dados lidos do EMS ocorre sem problemas. Porem o cliente deseja incluir dados (não fixos) no rodapé do documento gerado. Segui a mesma lógica que usei no corpo do programa porem a substituição não funcionou. Alguma ideia de como fazer isto? 2 – Preciso escrever número por extenso, exemplo “30 (trinta) dias”. Há alguma função no ambiente Progress que faça isto? 3 – Preciso escrever uma data por extenso, exemplo: 29/11/2024 ficaria “29 de novembro de 2024”. Há alguma função no ambiente Progress que faça isto? Qualquer ajuda será bem vinda. Sds
A parte da data por extenso ficou assim: Código: def var c-mes as char no-undo extent 12 initial ["Janeiro", "Fevereiro", "Mar o", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"]. def var c-data-por-extenso as char no-undo. if month(nota-fiscal.dt-emis-nota < 01 or month(nota-fiscal.dt-emis-nota > 12 then do: assign assign c-data-por-extenso = "***ERRO***". end. else do: assign c-data-por-extenso = string(day(nota-fiscal.dt-emis-nota),'99') + ' de ' + c-mes[month(nota-fiscal.dt-emis-nota)] + ' de ' + string(year(nota-fiscal.dt-emis-nota),'9999'). end.
A questão do número por extenso eu resolvi partindo de (bons) exemplos que encontrei aqui no fórum. Só esta pendente o item abaixo: 1 – Para os marcadores que estão no corpo do documento, a substituição do marcador por dados lidos do EMS ocorre sem problemas. Porem o cliente deseja incluir dados (não fixos) no rodapé do documento gerado. Segui a mesma lógica que usei no corpo do programa porem a substituição não funcionou. Alguma ideia de como fazer isto?
Solução define variable chwordapplication as com-handle no-undo. create "Word.application" chWordApplication. chWordApplicationocuments:Open("c:\tmp\Arq-Tz.docx"). chWordApplication:Selection:find:text = "Old". chWordApplication:Selection:find:replacement:text = "New". chWordApplication:ActiveDocument:ActiveWindow:ActivePane:View:SeekView = 9. /* Select header */ chWordApplication:Selection:find:Execute(,,,,,,,,,,2). /* replace */ chWordApplication:ActiveDocument:ActiveWindow:ActivePane:View:SeekView = 10. /* Select footer */ chWordApplication:Selection:find:Execute(,,,,,,,,,,2). /* replace */ chWordApplication:ActiveDocument:ActiveWindow:ActivePane:View:SeekView = 0. /* Select main */ chWordApplication:Selection:find:Execute(,,,,,,,,,,2). /* replace */ chWordApplication:ActiveDocument:SaveAs("c:\tmp\Arq-Mod.docx "). chWordApplication:Quit().
Eu custei a ver sua mensagem... desculpe a demora em responder. Eu consegui incluir uma planilha com umas 10 linhas e várias colunas. Onde eu tive problemas foi com o nome dos "marcadores". Em alguns casos, se um marcador é parte de outro o substituição falha. Marcadores que podem levar a falhas: "#nome" e "#nome-do-pai" e "#nome-da-mae". Neste caso o "nome" pode dar problemas. Se houver duvidas sobre isto basta testar com um nome de marcador "muito diferente". Ex: "#xpto-33". Para este teste o nome do marcador deve ser alterado no documento modelo e no programa. Boa sorte