1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Duvida Geração de documento no Word - Problemas.

Discussão em 'Progress 4GL' iniciado por ds201, Novembro 29, 2024.

  1. ds201

    ds201 Membro Participativo

    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
  2. ds201

    ds201 Membro Participativo

    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.
    
  3. ds201

    ds201 Membro Participativo

    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?
  4. ds201

    ds201 Membro Participativo

    Solução

    define variable chwordapplication as com-handle no-undo.
    create "Word.application" chWordApplication.

    chWordApplication:Documents: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().

Compartilhe esta Página