COMO FINALIZAR PROCESSO EXCEL QUE FUNCIONE
Olá pessoal
Novamente a porcaria do processo excel que não fecha
Imports Excel = Microsoft.Office.Interop.Excel
------------------------------------
Dim appXL As Excel.Application
Dim wbXl As Excel.Workbook
Dim shXL As Excel.Worksheet
Dim raXL As Excel.Range
appXL = CreateObject([Ô]Excel.Application[Ô])
wbXl = appXL.Workbooks.Add
shXL = wbXl.ActiveSheet
[txt-color=#0000f0]... Codigos funcionando 100%...[/txt-color]
[txt-color=#0000f0]Fechando:[/txt-color]
raXL = Nothing
shXL = Nothing
wbXl.Close()
wbXl = Nothing
appXL.Quit()
appXL = Nothing
AÃ eu entro lá nos processos o excel está lá pendurado
já fucei na internet dão dicas mas nenhuma funciona
Detalhe, não quero visualizar o excel, ele será montado e guardado em uma pasta
Se alguém puder ajudar, agradeço
Novamente a porcaria do processo excel que não fecha
Imports Excel = Microsoft.Office.Interop.Excel
------------------------------------
Dim appXL As Excel.Application
Dim wbXl As Excel.Workbook
Dim shXL As Excel.Worksheet
Dim raXL As Excel.Range
appXL = CreateObject([Ô]Excel.Application[Ô])
wbXl = appXL.Workbooks.Add
shXL = wbXl.ActiveSheet
[txt-color=#0000f0]... Codigos funcionando 100%...[/txt-color]
[txt-color=#0000f0]Fechando:[/txt-color]
raXL = Nothing
shXL = Nothing
wbXl.Close()
wbXl = Nothing
appXL.Quit()
appXL = Nothing
AÃ eu entro lá nos processos o excel está lá pendurado
já fucei na internet dão dicas mas nenhuma funciona
Detalhe, não quero visualizar o excel, ele será montado e guardado em uma pasta
Se alguém puder ajudar, agradeço
Nem uma dica?
Tente esta....
https://social.msdn.microsoft.com/Forums/pt-BR/21902c5c-8e87-40cb-9468-2fd6e4ae86bd/vba-advanced-excel-evitando-que-aplicaes-excel-fiquem-carregados-no-memria?forum=vbapt
https://social.msdn.microsoft.com/Forums/pt-BR/21902c5c-8e87-40cb-9468-2fd6e4ae86bd/vba-advanced-excel-evitando-que-aplicaes-excel-fiquem-carregados-no-memria?forum=vbapt
Citação::
Tente esta....
https://social.msdn.microsoft.com/Forums/pt-BR/21902c5c-8e87-40cb-9468-2fd6e4ae86bd/vba-advanced-excel-evitando-que-aplicaes-excel-fiquem-carregados-no-memria?forum=vbapt
Eu usei assim:
Private Sub LimpaExcel()
Dim s() As Process
Try
s = Process.GetProcessesByName([Ô]excel[Ô])
s(0).Kill()
Catch
MessageBox.Show([Ô]Não foi possivel finalizar o processo.[Ô], [Ô]DownloadsGratix Erro![Ô])
End Try
End Sub
O problema é que ele apaga todas as planilhas que por ventura possam estar abertas e não só aquelas criadas pelo programa
Interessante que os [Ô]Excel.exe[Ô] nos processos não tem ou não achei onde mostra a qual Planilha ele pertence.
Notei que se estiver uma planilha aberta antes, ela está em primeiro plano e as que dei [Ô]appExcel.Quit[Ô] ficaram em segundo plano, consequentemente devo apagar a do segundo plano assim não apaga alguma planilha aberta
Vou dar uma olhada no teu link para ver se tem algo sobre isso.
Valeu
se eu usar assim:
Private Sub LimpaExcel()
Dim s() As Process
Try
s = Process.GetProcessesByName([Ô]excel[Ô])
s(0).Kill()
Catch
MessageBox.Show([Ô]Não foi possivel finalizar o processo.[Ô], [Ô]DownloadsGratix Erro![Ô])
End Try
End Sub
ele apaga todos os exacel, gostaria de apagar só que está em segundo plano, tem como?
Private Sub LimpaExcel()
Dim s() As Process
Try
s = Process.GetProcessesByName([Ô]excel[Ô])
s(0).Kill()
Catch
MessageBox.Show([Ô]Não foi possivel finalizar o processo.[Ô], [Ô]DownloadsGratix Erro![Ô])
End Try
End Sub
ele apaga todos os exacel, gostaria de apagar só que está em segundo plano, tem como?
Tenho em vb e funciona certinho
Dim exclApp As Object
Dim exclBook As Object
Dim excSheet As Object
[ô]Carregar o Excel:
Set exclApp = CreateObject([Ô]Excel.Application[Ô])
[ô]Crie um WorkBook:
Set exclBook = exclApp.Workbooks.Add
[ô]Defina a planilha ativa p/ facilitar o trabalho:
Set exclSheet = exclApp.ActiveWorkbook.ActiveSheet
............. código
[ô]Fecha o excel
exclApp.Quit
[ô]Limpe as variáveis de Objeto:
Set exclSheet = Nothing
Set exclBook = Nothing
Set exclApp = Nothing
Dim exclApp As Object
Dim exclBook As Object
Dim excSheet As Object
[ô]Carregar o Excel:
Set exclApp = CreateObject([Ô]Excel.Application[Ô])
[ô]Crie um WorkBook:
Set exclBook = exclApp.Workbooks.Add
[ô]Defina a planilha ativa p/ facilitar o trabalho:
Set exclSheet = exclApp.ActiveWorkbook.ActiveSheet
............. código
[ô]Fecha o excel
exclApp.Quit
[ô]Limpe as variáveis de Objeto:
Set exclSheet = Nothing
Set exclBook = Nothing
Set exclApp = Nothing
Descrevi como fiz acima, quase idêntico ao seu.
o uso do [Ô]set[Ô] deve ser em VB6
no meu VB6 tb funciona
mas no VB.NET (não se usa [Ô]set[Ô] na frente das variáveis) ele não fecha totalmente o excel, fica lá aberto em segundo plano, na internet tem um milhares com o mesmo problema.
me obrigo usar após a limpeza dos objetos
Dim s() As Process
Try
s = Process.GetProcessesByName([Ô]excel[Ô])
s(0).Kill()
Catch
MessageBox.Show([Ô]Não foi possivel finalizar o processo.[Ô], [Ô]DownloadsGratix Erro![Ô])
End Try
só que lipa qualquer excel aberto e não só os do segundo plano
o uso do [Ô]set[Ô] deve ser em VB6
no meu VB6 tb funciona
mas no VB.NET (não se usa [Ô]set[Ô] na frente das variáveis) ele não fecha totalmente o excel, fica lá aberto em segundo plano, na internet tem um milhares com o mesmo problema.
me obrigo usar após a limpeza dos objetos
Dim s() As Process
Try
s = Process.GetProcessesByName([Ô]excel[Ô])
s(0).Kill()
Catch
MessageBox.Show([Ô]Não foi possivel finalizar o processo.[Ô], [Ô]DownloadsGratix Erro![Ô])
End Try
só que lipa qualquer excel aberto e não só os do segundo plano
Cara,
Seguinte... O processo não fecha mesmo. O que acontece é que o processo fica aberto mas com o tÃtulo em branco.
Tente fazer o loop novamente mas faz um If para dectar se o processo tem o tÃtulo da janela em branco.
Estou fora de casa e tem um tempo que não programo para VB, mas é algo assim:
Assim, o programa vai fechar só os processos referentes ao seu programa.
REPITO: Estou longe de casa e estou mudando meu ramo para php e tem muito tempo que não programo em VB, mas veja quais comandos se parecem com os que eu escrevi e mande ver.
Seguinte... O processo não fecha mesmo. O que acontece é que o processo fica aberto mas com o tÃtulo em branco.
Tente fazer o loop novamente mas faz um If para dectar se o processo tem o tÃtulo da janela em branco.
Estou fora de casa e tem um tempo que não programo para VB, mas é algo assim:
For Each processo In Process
If processo.ProcessName = [Ô]Excel[Ô] Then
If processo.MainTitle = [Ô][Ô] Then
processo.Kill()
End If
End If
Next
Assim, o programa vai fechar só os processos referentes ao seu programa.
REPITO: Estou longe de casa e estou mudando meu ramo para php e tem muito tempo que não programo em VB, mas veja quais comandos se parecem com os que eu escrevi e mande ver.
Ok, entendi a logica, vou ver se consigo fazer aqui,
esse MainTitle parece que não tem, vou ver qual faz a mesma coisa.
Valeu
esse MainTitle parece que não tem, vou ver qual faz a mesma coisa.
Valeu
O processo é este.... Fiz aqui na minha casa...
For Each processo In Process.GetProcesses
If processo.ProcessName = [Ô]Excel[Ô] Then
If processo.MainWindowTitle = [Ô][Ô] Then
processo.Kill()
End If
End If
Next
Ok, deu certo
Apagou só as planilhas criadas, Deixei uma outra aberta e não apagou
como o loop é muito rápido acaba deixando planilhas pra trás sem apagar.
Bastou colocar um sleep de 1 segundo
finalizando ficou assim:
For Each processo As Process In Process.GetProcesses()
If UCase(processo.ProcessName) = [Ô]EXCEL[Ô] Then
If processo.MainWindowTitle = [Ô][Ô] Then
Try
processo.Kill()
System.Threading.Thread.Sleep(1000)
Catch
MessageBox.Show([Ô]Não foi possivel finalizar o processo.[Ô], [Ô]DownloadsGratix Erro![Ô])
End Try
End If
End If
Next
ps. Como tu colocou as linhas de códigos endentados com outra fonte na tua resposta?
Grato
Apagou só as planilhas criadas, Deixei uma outra aberta e não apagou
como o loop é muito rápido acaba deixando planilhas pra trás sem apagar.
Bastou colocar um sleep de 1 segundo
finalizando ficou assim:
For Each processo As Process In Process.GetProcesses()
If UCase(processo.ProcessName) = [Ô]EXCEL[Ô] Then
If processo.MainWindowTitle = [Ô][Ô] Then
Try
processo.Kill()
System.Threading.Thread.Sleep(1000)
Catch
MessageBox.Show([Ô]Não foi possivel finalizar o processo.[Ô], [Ô]DownloadsGratix Erro![Ô])
End Try
End If
End If
Next
ps. Como tu colocou as linhas de códigos endentados com outra fonte na tua resposta?
Grato
Tópico encerrado , respostas não são mais permitidas