Página 1 de 1

fechar o excel apos muito tempo inativo

Enviado: 24 Jan 2020 às 09:11
por batistathor
bom dia ,tenho uma planilha na rede com varias pessoas usando ,quando alguém deixa a planilha aberta ninguém pode mas usa..
gostaria de um código vba para fecha a planilha apos algum tempo inativa ; obs. só quando estiver inativa para não ficar fechando todo hora ..

fechar o excel apos muito tempo inativo

Enviado: 24 Jan 2020 às 09:29
por eduardogrigull
A planilha não é compartilhada certo? É complicado explicar ao código VBA o que seria "ser inativo". Segue um exemplo funcional:

Isso voce poe num módulo:
Código: Selecionar todos
Dim DownTime As Date

Sub SetTimer()
    DownTime = Now + TimeValue("00:05:00") 'Valor pra fechar a planilha (Está em 5 min)
    Application.OnTime EarliestTime:=DownTime, Procedure:="ShutDown", Schedule:=True
End Sub

Sub StopTimer()
    On Error Resume Next
    Application.OnTime EarliestTime:=DownTime, Procedure:="ShutDown", Schedule:=False
 End Sub

Sub ShutDown()
    Application.DisplayAlerts = False
    ThisWorkbook.Save
    ThisWorkbook.Close
End Sub
No Workbook Open voce poe:
Código: Selecionar todos
Call SetTimer
No Workbook BeforeClose voce poe:
Código: Selecionar todos
Call StopTimer
E por último, para resetar o contador, voce poe no SheetSelectionChange e no Calculate isso:
Código: Selecionar todos
Call StopTimer
Call SetTimer

fechar o excel apos muito tempo inativo

Enviado: 24 Jan 2020 às 11:01
por batistathor
bom dia Eduardo, esse código ficou show .. um duvida como posso resolver o problema se tiver mas de uma planilha aberta esse código fecha todas as planilhas, queria fechar só a planilha especifica..obs . a planilha fecha mas ainda fica aberta, ela fica cinza como resolver isso ? eu coloquei application.quit tirei o close ...

fechar o excel apos muito tempo inativo

Enviado: 24 Jan 2020 às 11:46
por eduardogrigull
Caramba, foi de quebrar a cabeça, mas deu certo. Substitua o código a Sub ShutDown:
Código: Selecionar todos
If Application.Workbooks.Count = 1 Then

    Application.Workbooks(ThisWorkbook.Name).Activate
    Application.Workbooks(ThisWorkbook.Name).Save
    Application.Quit

Else

    Application.Workbooks(ThisWorkbook.Name).Activate
    Application.Workbooks(ThisWorkbook.Name).Close True

End If