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 Eliminando instancia do Excel

Discussão em 'Progress 4GL' iniciado por erickles, Maio 21, 2015.

  1. fernandofarah

    fernandofarah Membro Participativo

    Desculpe estar "perturbando" mas teria como me indicar como fazer?
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    hehehe, só vi isso uma vez, vou ter que procurar aqui, quando achar eu te digo.
  3. ueluis

    ueluis Membro Participativo

    Olá,

    aqui eu também tinha este problema, eu utilizo desta maneira e pode abrir salvar e etc que não gera erro:
    Código:
    DEF VAR h-acomp AS HANDLE NO-UNDO.
    DEF VAR ver AS CHAR INIT "1.0".
    DEF VAR CONT AS INT.
    DEF VAR i-linha   AS INT NO-UNDO INITIAL 1.
    DEF VAR excelappl AS COM-HANDLE NO-UNDO.
    define variable chWorkBook         as com-handle.
    define variable chWorkSheet        as com-handle.
    DEF VAR c-ini AS CHARACTER FORMAT "x(1)" INIT "A".
    DEF VAR c-fim AS CHARACTER FORMAT "x(2)" INIT ":AD".
    DEF VAR LS  AS INT INIT 1.
    DEF VAR FT  AS INT INIT 12.
    DEF VAR CI  AS INT INIT 10.
    DEF VAR AV  AS INT INIT 2.
    DEF VAR AV1 AS INT INIT 3.
    DEF VAR MES AS INT INIT 0.
    define variable v-terminou as logical no-undo initial no.
    
    
    RUN utp/ut-acomp.p PERSISTENT SET h-acomp.
    RUN pi-inicializar IN h-acomp(INPUT "Exportando tabela Emitente.").
    
        RUN pi-acompanhar IN h-acomp (INPUT STRING("Preparando para Criar Arquivo...")).
    
    
    
    
        create "Excel.Application" excelappl.
    
            IF excelappl  = ? THEN DO:
                MESSAGE "Não existe Microsoft Excel instalado nesta máquina." VIEW-AS ALERT-BOX INFO BUTTONS OK.
                RETURN.
            END.
    
    /*inicio =>para que o excel seja exibido caso usuario pressioanr cancelar*/
        do on stop undo, return error
           on error undo, return error :
    
               /**************** inicio da formatação de celulas no objeto excel criado ************/           
                excelappl:VISIBLE = FALSE.
            
                RUN pi-acompanhar IN h-acomp (INPUT STRING("Criando Arquivo xls em Segundo Plano...")).
    
    
    
    excelappl:VISIBLE = FALSE.
                   
                    chWorkbook = excelappl:Workbooks:add().
                    chWorkSheet = excelappl:Sheets:item(1).
                       chWorkSheet:Range(c-ini + STRING(i-linha, "999999") + c-fim + STRING(i-linha, "999999")):EntireColumn:AutoFit.
                       chWorkSheet:Range(c-ini + STRING(i-linha, "999999") + c-fim + STRING(i-linha, "999999")):EntireRow:AutoFit.
                       chWorkSheet:Range(c-ini + STRING(i-linha, "999999") + c-fim + STRING(i-linha, "999999")):MergeCells = TRUE.
                       chWorkSheet:Range(c-ini + STRING(i-linha, "999999") + c-fim + STRING(i-linha, "999999")):Font:bold = TRUE.
                       chWorkSheet:Range(c-ini + STRING(i-linha, "999999") + c-fim + STRING(i-linha, "999999")):VerticalAlignment = AV.
                       chWorkSheet:Range(c-ini + STRING(i-linha, "999999") + c-fim + STRING(i-linha, "999999")):HorizontalAlignment = AV1.
                       chWorkSheet:Range(c-ini + STRING(i-linha, "999999") + c-fim + STRING(i-linha, "999999")):Borders:Weight = AV1.
                       chWorkSheet:Range(c-ini + STRING(i-linha, "999999") + c-fim + STRING(i-linha, "999999")):Font:SIZE = FT.
                       chWorkSheet:Range(c-ini + STRING(i-linha, "999999") + c-fim + STRING(i-linha, "999999")):interior:colorindex = CI.
                       chWorkSheet:Range(c-ini + STRING(i-linha, "999999") + c-fim + STRING(i-linha, "999999")):font:colorindex  = AV.
                       chWorkSheet:Range(c-ini + STRING(i-linha, "999999") + c-fim + STRING(i-linha, "999999")):Borders:LineStyle = LS.
                       excelappl:selection:Range(c-ini + STRING(i-linha, "999999") + c-fim + STRING(i-linha, "999999")):VALUE = "rel tabela Emitente" +
                                                                 ver + "                                      Gerado em:" + string(TODAY  ) + "  " + string(TIME, "hh:mm:ss").
    
                   i-linha = i-linha + 1.
                       chWorkSheet:Range(c-ini + STRING(i-linha, "999999") + c-fim + STRING(i-linha, "999999")):EntireColumn:AutoFit.
                       chWorkSheet:Range(c-ini + STRING(i-linha, "999999") + c-fim + STRING(i-linha, "999999")):EntireRow:AutoFit.
                       chWorkSheet:Range(c-ini + STRING(i-linha, "999999") + c-fim + STRING(i-linha, "999999")):interior:colorindex = CI.
                       chWorkSheet:Range(c-ini + STRING(i-linha, "999999") + c-fim + STRING(i-linha, "999999")):font:colorindex  = AV.
                       chWorkSheet:Range(c-ini + STRING(i-linha, "999999") + c-fim + STRING(i-linha, "999999")):Borders:LineStyle = LS.
                       chWorkSheet:Range(c-ini + STRING(i-linha, "999999") + c-fim + STRING(i-linha, "999999")):Borders:Weight = AV1.
                   
                    ASSIGN
                       chWorkSheet:range("a" + STRING(i-linha, "999999")):VALUE = "cod-emitente"
                       chWorkSheet:range("b" + STRING(i-linha, "999999")):VALUE = "nome-emit".   
    
                  
                   
                    i-linha = i-linha + 1.
    
                    /*congelando cabeçalhos*/
                   excelappl:range("A3"):SELECT.
                   excelappl:ActiveWindow:FreezePanes = TRUE.
                   excelappl:range("A3"):SELECT.
                   
    
    
    
    for each emitente NO-LOCK WHERE emitente.nome-emit  BEGINS "CIA":
      
    
       RUN pi-acompanhar IN h-acomp (INPUT STRING("Adicionando Registros...  ") +  substring(emitente.nome-emit,1,20) ).
    
              
                ASSIGN
                    chWorkSheet:range("a" + STRING(i-linha, "999999")):VALUE = emitente.cod-emitente
                    chWorkSheet:range("b" + STRING(i-linha, "999999")):VALUE = emitente.nome-emit.
    
                i-linha = i-linha + 1.
               
       
      END.
       
        assign
              v-terminou = yes.
    
             /**************** Liberação do excel  ************/
        FINALLY :
    
        MESSAGE (if v-terminou then 'Processo Completo!' else 'Processo Cancelado pelo Usuário/Erro inesperado!')
            VIEW-AS ALERT-BOX INFO BUTTONS OK.
    
        IF VALID-HANDLE(excelappl) then do:
            excelappl:visible = true.
            excelappl:ScreenUpdating = YES.
            release object excelappl. 
        end.
        IF VALID-HANDLE(chWorkbook) then
            release object chWorkbook.
        IF VALID-HANDLE(chWorksheet) then
        release object chWorksheet.
    
            END FINALLY.   
    
        /*Fim =>para que o excel seja exibido caso usuario pressioanr cancelar*/
         END. 
    
    /*****************************************************************************************/
    
    /* executando de forma persistente o utilitário de acompanhamento */
    RUN utp/ut-acomp.p PERSISTENT SET h-acomp.
    {utp/ut-liter.i Exportando_Registros_Para_Excel *}
    
    RUN pi-inicializar IN h-acomp (INPUT RETURN-VALUE).
    
    
    
    
    
    
  4. cintiasottelli

    cintiasottelli Membro Participativo


    Teria como fazer algo assim pra matar o processo do WORD?

    Já estou fazendo o

    Código:
            APPWORD:ACTIVEDOCUMENT:SAVEAS(ARQUIVO-FINAL).
            APPWORD:ACTIVEWINDOW:CLOSE.
            RELEASE OBJECT APPWORD NO-ERROR.
            IF SEARCH(arquivo-final) <> ? THEN OS-DELETE VALUE(arquivo-final).
    
    Ainda assim, quando o usuário tentar gerar o relatório, fica travado até que alguém mate o processo.

    Se tiver algo, seria de grande ajuda.
  5. fernandofarah

    fernandofarah Membro Participativo

    Ao inves do close, de um Quit

    Código:
    APPWORD:ACTIVEWINDOW:QUIT.
    Uso assim.
  6. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Se essa variável AppWord for HANDLE ou COM-HANDLE igual ao chExcel, é só substituir a variável no código que passei e vc comentou.

Compartilhe esta Página