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. erickles

    erickles Membro Participativo

    Olá pessoal,

    Estou gerando um relatório e salvando o mesmo em PDF e preciso fechar de vez a instancia do Excel da memória. Para isto, estou executando as seguintes linhas de código, mas ainda sim, o Excel permanece aberto:

    Código:
     chExcelApplication:Workbooks(1):Close(FALSE,FALSE).
            chExcelApplication:QUIT().
           
            RELEASE OBJECT chWorksheet.
            RELEASE OBJECT chWorkbook.
            RELEASE OBJECT chExcelApplication.
    Alguém tem alguma luz?
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Exemplo matando o processo pelo ID:

    Código:
    DEFINE VARIABLE chExcel     AS COM-HANDLE NO-UNDO. /* Documento Excel */
    CREATE "Excel.Application" chExcel.     /*criar planilha*/
    
    chExcel:VISIBLE = TRUE.
    
    DEF VAR PID AS INTEGER.
    RUN GetWindowThreadProcessId(INPUT chExcel:Hwnd, OUTPUT PID).
    
    MESSAGE PID
        VIEW-AS ALERT-BOX INFO BUTTONS OK.
    
    OS-COMMAND SILENT VALUE("TASKKILL /F /T /PID " + STRING(PID)).
    
    PROCEDURE GetWindowThreadProcessId EXTERNAL "user32.dll": 
        DEFINE INPUT PARAMETER handleToExcel      AS LONG NO-UNDO. 
        DEFINE OUTPUT PARAMETER processIdForExcel AS LONG NO-UNDO. 
    END PROCEDURE. 
    
  3. fernandofarah

    fernandofarah Membro Participativo

    Acho que tirando a primeira linha, ficando assim:

    Código:
    chExcelApplication:QUIT().
    RELEASE OBJECT chWorksheet.
    RELEASE OBJECT chWorkbook.
    RELEASE OBJECT chExcelApplication.
    valeu, falou!
  4. erickles

    erickles Membro Participativo

    Rafael, funcionou muito bem! Muito Obrigado!
  5. fernandofarah

    fernandofarah Membro Participativo

    Nesse primeiro código você está referenciando apenas o workbook e não a variável chExcel, por isso ficava na memoria..
  6. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Eu estava com um problema parecido, quando eu estava abrindo um excel e populando via programa, o usuario não podia mexer em nada referente a excel que dava erro, dai verifiquei mas minhas rotinas que eu estava abrindo uma central do excel, como se fosse um servidor, pra depois abrir a planilha, agora eu tirei o comando e deixei só pra abrir a planilha e liberou os usuarios, enquanto tá gerando o relatório tá mexendo em outros excel sem problema.

Compartilhe esta Página