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

Condição para Fechar Workbook ou o aplicativo Excel

6 Posts
3 Usuários
0 Reactions
1,979 Visualizações
(@carloshvb)
Posts: 0
New 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
(@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

 
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
 
Postado : 29/04/2015 8:57 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Laender, tem razão.

 
Postado : 29/04/2015 8:58 am
(@carloshvb)
Posts: 0
New 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
(@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.

 
Postado : 29/04/2015 10:16 am