Liberar Excel da Memoria
[b:f7def2169f]Estou montando uma rotina para exportar dados automaticamente para o Excel.
Segue a rotina abaixo
[color=red:f7def2169f]lcid := GetUserDefaultLCID; //pega o usuário logado
Path := ExtractFilePath(Application.ExeName) + ´pedido.xls´;
WkBk := ExcelApplication1.Workbooks.Open(Path , EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, LCID);
ExcelApplication1.Visible[lcid] := true; //torna a aplicação visível
//ExcelApplication1.Visible[lcid] := False; //torna a aplicação visível
ExcelApplication1.DisplayAlerts[lcid] := false; //remove alertas do excel
ExcelWorksheet1.ConnectTo(WkBk.Worksheets[2] as _Worksheet);
ExcelWorksheet1.Activate(LCID); //ativa a planilha conectada
ExcelApplication1.ScreenUpdating[lcid] := true; //torna possível fazer alterações
For vi_ContaLinha := 1 to vi_TotLinha Do
Begin
...... rotina ......
End;
ExcelApplication1.disconnect;
ExcelWorksheet1.SaveAs( ExtractFilePath(Application.ExeName) + EditNameArq.Text + ´.xls´);
ExcelApplication1.Free;[/color:f7def2169f]
Meu problema é o seguinte, quando deixo assim:
ExcelApplication1.Visible[lcid] := False; //torna a aplicação visível
O excel nao libera dos processos do windows, ficando preso e não consigo abrir novamente o excel, mesmo utilizando a rotina ExcelApplication1.Free;
Alguem teria uma ideia?
Obrigado
Beto[/b:f7def2169f]
Segue a rotina abaixo
[color=red:f7def2169f]lcid := GetUserDefaultLCID; //pega o usuário logado
Path := ExtractFilePath(Application.ExeName) + ´pedido.xls´;
WkBk := ExcelApplication1.Workbooks.Open(Path , EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, LCID);
ExcelApplication1.Visible[lcid] := true; //torna a aplicação visível
//ExcelApplication1.Visible[lcid] := False; //torna a aplicação visível
ExcelApplication1.DisplayAlerts[lcid] := false; //remove alertas do excel
ExcelWorksheet1.ConnectTo(WkBk.Worksheets[2] as _Worksheet);
ExcelWorksheet1.Activate(LCID); //ativa a planilha conectada
ExcelApplication1.ScreenUpdating[lcid] := true; //torna possível fazer alterações
For vi_ContaLinha := 1 to vi_TotLinha Do
Begin
...... rotina ......
End;
ExcelApplication1.disconnect;
ExcelWorksheet1.SaveAs( ExtractFilePath(Application.ExeName) + EditNameArq.Text + ´.xls´);
ExcelApplication1.Free;[/color:f7def2169f]
Meu problema é o seguinte, quando deixo assim:
ExcelApplication1.Visible[lcid] := False; //torna a aplicação visível
O excel nao libera dos processos do windows, ficando preso e não consigo abrir novamente o excel, mesmo utilizando a rotina ExcelApplication1.Free;
Alguem teria uma ideia?
Obrigado
Beto[/b:f7def2169f]
Splash
Curtidas 0
Respostas
Edilcimar
01/04/2005
se você colocou visible = false então a aplicação está ativa e invisível, tente colocá-la visible = true novamente
GOSTEI 0