Como liberar o Excel da memória

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Adson
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 05 Mar 2019 10:36
Localização: GOIANIA/GO

Como liberar o Excel da memória

Mensagem por Adson »

Boa tarde, senhores(as):

Tenho uma situação no sistema em que preciso gerar uma planilha Excel. O problema é que, mesmo executando os comandos de liberação do objeto, o Excel continua em execução em segundo plano.

Alguém tem uma dica de como fazer?

Meu código está assim:

Código: Selecionar todos

FUNCTION gerEnvXMLExcel()

  #DEFINE AUT "Autorizadas"
  #DEFINE CAN "Canceladas"
  #DEFINE AAU "Aguardando Autorização"
  #DEFINE INU "Inutilizadas"
  #DEFINE DEN "Denegadas"
  #DEFINE ENT "Notas de Entradas"
  #DEFINE OUT "Outras"

  TRY
    oExcel := CreateObject( "Excel.Application" )
  CATCH
    Msginfo("Falha na criação do arquivo excel. Favor verificar se o excel está instalado!",'Atenção')
	Return .F.
  END	 

  oExcel:Visible       := .F.    
  oExcel:DisplayAlerts := .F.
  oExcel:WorkBooks:Add()

  // Cria uma aba para cada tipo de documento
  oExcel:Sheets:Add()
  oSheet := oExcel:ActiveSheet
  oSheet:Name := OUT
  oExcel:Sheets(OUT):Tab:Color := 0xFF00FF   && Magenta
  oExcel:Sheets(OUT):Select()
  MontaCabecalho("RELAÇÃO DE OUTROS TIPOS DE NOTAS NO PERÍODO: "+DTOC(pDtInicio)+' A '+DTOC(pDtFim))
  ...
  ...
  ...
  oExcel:WorkBooks:Close()
  oExcel:Quit()
  oExcel := nil // Libera o Excel
  Release oExcel
Mesmo executando o método Quit(), atribuindo nil e executando o Release no objeto, o Excel continua em execução.

xHarbour 1.2.3 + HWGUI
Editado pela última vez por Itamar M. Lins Jr. em 04 Nov 2020 11:06, em um total de 1 vez.
Razão: O presente tópico foi movido da seção HwGui, uma vez que seu conteúdo não tem relação com os objetivos daquela seção, onde só podem constar dúvidas técnicas de programação diretamente relacionadas com a HwGui.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Como liberar o Excel da memória

Mensagem por asimoes »

oWorkBook := oExcel:WorkBooks:Add()

No final:

oWorkBook:Close()

oExcel:Quit()

oWorkBook := Nil

oExcel := Nil
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Adson
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 05 Mar 2019 10:36
Localização: GOIANIA/GO

Como liberar o Excel da memória

Mensagem por Adson »

asimoes escreveu:oWorkBook := oExcel:WorkBooks:Add()

No final:

oWorkBook:Close()

oExcel:Quit()

oWorkBook := Nil

oExcel := Nil
Obrigado, asimoes, só tive que acrescentar oSheet := Nil na sua sugestão. Aí funcionou 100%

Valewwww!!!!!
Responder