Condição para Fecha...
 
Notifications
Clear all

Condição para Fechar Workbook ou o aplicativo Excel

6 Posts
3 Usuários
0 Reactions
1,991 Visualizações
(@carloshvb)
Posts: 99
Trusted Member
Topic starter
 

Bom dia pessoal,

Estou com o seguinte problema, desenvolvi um banco de dados em Excel que deve funcionar apenas por intermédio de formulários, isto está funcionando sem problemas, meu problema é quando mando fechar a aplicação.

O que acontece é que caso eu tenha outras planilhas abertas, ao utilizar o código abaixo para fechar a aplicação o Excel manda fechar todas as planilhas abertas.

Private Sub btSai_Click()
    ActiveWorkbook.Save
    Unload Me
    Application.Visible = True
    ThisWorkbook.Application.Quit
End Sub

Então pesquisando no forum eu encontrei a solução abaixo, porem, agora quando eu abro apenas o banco de dados, quando mando fechar a aplicação, a janela vazia do excel ainda fica aberta.

Private Sub btSai_Click()
    ActiveWorkbook.Save
    Unload Me
    Application.Visible = True
    ThisWorkbook.Close True
End Sub

Então o que preciso é de um código para checar se tem outras planilhas abertas e em caso negativo fechar o Excel. Isso é possível, como faço?

Desde já agradeço a atenção.

Att, Carlos

 
Postado : 29/04/2015 8:40 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Minha mensagem numero 1300 ! :)

Ok, vamos lá!

Private Sub btSai_Click()
    ThisWorkbook.Save
    Unload Me
    Application.Visible = True
    ThisWorkbook.Close True

'Aqui a gente testa pra ver se tem algo aberto no Excel. Se não tiver mais, fecha ele.
    If Application.Workbooks.Count = 0 Then
        Appllication.Quit
    End With

End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/04/2015 8:48 am
(@laennder)
Posts: 62
Trusted Member
 

Fernando, a sua macro tem um pequeno lapso de lógica, já que após fechar a pasta de trabalho, a macro não continuará sendo executada...

Eu faria assim:

Private Sub btSai_Click()    

   ThisWorkbook.Save

If Application.Workbooks.Count > 1 Then  
    Application.Visible = True
    ThisWorkbook.Close True
else
    Application.Quit
end if

end sub

Laennder Alves
Microsoft MVP

 
Postado : 29/04/2015 8:57 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Laender, tem razão.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/04/2015 8:58 am
(@carloshvb)
Posts: 99
Trusted Member
Topic starter
 

Fernando,

Obrigado pela ajuda, eu precisei acertar um pouco o código mas funcionou, segue o código:

Private Sub btSai_Click()
    ActiveWorkbook.Save
    Unload Me
         
    If Application.Workbooks.Count = 1 Then
        Application.Quit
        Else
        Application.Visible = True
        ThisWorkbook.Close True
    End If
End Sub

Laennder, eu não tinha visto sua resposta, mas parece que tivemos praticamente a mesma ideia. Obrigado a ambos pela ajuda.

 
Postado : 29/04/2015 9:36 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Apontei a resposta do Laennder como a correta, visto que seu código ficou igual ao dele.

Por favor sempre marque como resolvido, mas clicando no verdinho da resposta que te atendeu.

Trópico trancado.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 29/04/2015 10:16 am