Note: The other languages of the website are Google-translated. Back to English
Registo de cliente  \/ 
x
or
x
Registe-se  \/ 
x

or

Como salvar e fechar automaticamente um arquivo do Excel após um certo tempo ocioso?

Em alguns casos, como deixar um arquivo do Excel em um disco compartilhado, quando o arquivo ainda está sendo aberto por um usuário, outras pessoas não conseguem editar a pasta de trabalho. Então, como fechar automaticamente o arquivo após um certo tempo ocioso para facilitar o trabalho de outras pessoas? Este artigo o ajudará com o método VBA.

Salvar e fechar automaticamente um arquivo do Excel após um certo tempo de inatividade com o código VBA


Salvar e fechar automaticamente um arquivo do Excel após um certo tempo de inatividade com o código VBA


Para salvar e fechar automaticamente um arquivo do Excel após um certo tempo ocioso, faça o seguinte.

1. Abra a pasta de trabalho necessária para salvá-la automaticamente e fechar após um certo tempo de inatividade. Em seguida, pressione o outro + F11 chaves juntas para abrir o Microsoft Visual Basic para Aplicações janela.

2. No Microsoft Visual Basic para Aplicações janela, clique duas vezes no Esta pasta de trabalho no painel direito para abrir a janela de código. Em seguida, copie e cole o código VBA abaixo na janela Código. Veja a imagem:

Código VBA 1: salvar e fechar automaticamente um arquivo do Excel após um certo tempo de inatividade

Dim xTime As String
Dim xWB As Workbook

Private Sub Workbook_Open()
'Updated by Extendoffice 2019/1/20
    On Error Resume Next
    xTime = Application.InputBox("Please specify the idle time:", "KuTool For Excel", "00:00:20", , , , , 2)
    Set xWB = ActiveWorkbook
    If xTime = "" Then Exit Sub
    Reset
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    On Error Resume Next
    If xTime = "" Then Exit Sub
    Reset
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    On Error Resume Next
    If xTime = "" Then Exit Sub
    Reset
End Sub

Sub Reset()
    Static xCloseTime
    If xCloseTime <> 0 Then
        ActiveWorkbook.Application.OnTime xCloseTime, "SaveWork1", , False
    End If
    xCloseTime = Now + TimeValue(xTime)
    ActiveWorkbook.Application.OnTime xCloseTime, "SaveWork1", , True
End Sub

3. Em seguida, clique em inserção > móduloe copie e cole o código abaixo na janela Módulo. Veja a imagem:

Código VBA 2: salvar e fechar automaticamente um arquivo do Excel após um certo tempo de inatividade

Sub SaveWork1()
'Updated by Extendoffice 2019/1/20
    Application.DisplayAlerts = False
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    
    Application.DisplayAlerts = True
End Sub

4. aperte o outro + Q simultaneamente para fechar o Microsoft Visual Basic para Aplicações janela.

5. Clique Envie o > Salvar como > procurar. Veja a imagem:

6. No Salvar como caixa de diálogo, selecione uma pasta para salvar o arquivo, nomeie-o como você precisa na caixa Nome do arquivo, selecione Pasta de trabalho habilitada para macro do Excel de Salvar como tipo lista suspensa e, finalmente, clique no Salvar botão. Veja a imagem:

De agora em diante, sempre que abrir esta apostila, um Kutools for Excel a caixa de diálogo aparecerá. Insira a hora em que você salvará e feche a pasta de trabalho com base e clique no botão OK botão.

E a pasta de trabalho será salva e fechada automaticamente após o tempo ocioso especificado. Veja a imagem:


As melhores ferramentas de produtividade para escritório

O Kutools for Excel resolve a maioria dos seus problemas e aumenta sua produtividade em 80%

  • armadilha para peixes: Insira rapidamente fórmulas complexas, gráficos e qualquer coisa que você tenha usado antes; Criptografar células com senha; Criar lista de discussão e enviar emails ...
  • Barra Super Fórmula (edite facilmente várias linhas de texto e fórmula); Layout de leitura (ler e editar facilmente um grande número de células); Colar na faixa filtrada...
  • Mesclar células / linhas / colunas sem perder dados; Dividir o conteúdo das células; Combinar linhas / colunas duplicadas... Evite células duplicadas; Comparar intervalos...
  • Selecione Duplicado ou Único Linhas; Selecione linhas em branco (todas as células estão vazias); Super Find e Fuzzy Find em muitos livros; Seleção aleatória ...
  • Cópia exata Várias células sem alterar a referência da fórmula; Criação automática de referências para várias folhas; Inserir marcadores, Caixas de seleção e mais ...
  • Extrair Texto, Adicionar texto, remover por posição, Remover Espaço; Criar e imprimir subtotais de paginação; Converter entre conteúdo de células e comentários...
  • Super Filtro (salvar e aplicar esquemas de filtro a outras planilhas); Classificação Avançada por mês / semana / dia, frequência e mais; Filtro Especial por negrito, itálico ...
  • Combine pastas de trabalho e planilhas; Mesclar tabelas com base em colunas-chave; Divida os dados em várias folhas; Conversão em lote de xls, xlsx e PDF...
  • Mais de 300 recursos poderosos. Suporta Office / Excel 2007-2019 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Teste gratuito de 30 dias com recursos completos. Garantia de devolução do dinheiro em 60 dias.
guia kte 201905

Guia do Office traz interface com guias para o Office e torna seu trabalho muito mais fácil

  • Habilite a edição e leitura com guias em Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novas guias da mesma janela, em vez de em novas janelas.
  • Aumenta sua produtividade em 50% e reduz centenas de cliques do mouse para você todos os dias!
parte inferior da aba do escritório
Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Zakariya · 2 months ago
    Hi mister, how to view the countdown?
  • To post as a guest, your comment is unpublished.
    Zakariya · 2 months ago
    Hi mister, how to view the countdown?
  • To post as a guest, your comment is unpublished.
    Mike · 8 months ago
    (Sigh.)
    Have a look at the code.
    If you put this VBA into Excel001.xlsm, but, when the timeout occurs, you have Excel002.xlsm as the "active" workbook, then it's actually going to close THAT Excel file, rather than the one you've put the VBA into.

    • To post as a guest, your comment is unpublished.
      Mike B · 2 months ago
      look below, Mark's comment : "I would recommend identifying the workbook with the workbook file name. This would allow the users to have multiple workbooks open and closing out only the specific workbook that needs to have the time lock.

      Suggestion: Set xwb = Workbooks("<file name>")
      instead of: Set xwb = ActiveWorkbook

      Also, replace all references to "ActiveWorkbook" to the Xwb in the module

      Great code otherwise."
  • To post as a guest, your comment is unpublished.
    Andrew · 1 years ago
    Hi. I need to set my shared spreadsheet on the office network to auto save and close when I'm done with it for the day. Only my boss and I are supposed to make and save changes, but several managers view it daily.

    I need to be able to have it auto save for the two of us, while not saving for other users. Is this possible? Can I set the macro to work only for us? Or will it effect everyone?

    I know how to protect the sheet, but I can't do that, because they want to be able to make some temporary changes from time to time. I just need to be able restrict auto save to specific users.
  • To post as a guest, your comment is unpublished.
    Garth · 2 years ago
    Is there a way to change this so it prompts the user to save/close the file, instead of automatically saving and closing the file?
  • To post as a guest, your comment is unpublished.
    Nitin · 2 years ago
    it is asking for idle time everytime I am opening.

    I want time should not be shown while opening the workbook. (if required, it can be changed in VBA)
    • To post as a guest, your comment is unpublished.
      Tarun · 2 years ago
      Change line
      xTime = Application.InputBox("Please specify the idle time:", "KuTool For Excel", "00:00:20", , , , , 2)


      to

      xTime = "00:00:20"


      it will not ask
  • To post as a guest, your comment is unpublished.
    robert · 2 years ago
    Is there a way to make this work so even if you not on the sheet like click over to another window the timmer will still close that sheet? It seems like i have to stay on the file for it to work
  • To post as a guest, your comment is unpublished.
    Mark · 2 years ago
    I would recommend identifying the workbook with the workbook file name. This would allow the users to have multiple workbooks open and closing out only the specific workbook that needs to have the time lock.

    Suggestion: Set xwb = Workbooks("<file name>")
    instead of: Set xwb = ActiveWorkbook

    Also, replace all references to "ActiveWorkbook" to the Xwb in the module

    Great code otherwise.
    • To post as a guest, your comment is unpublished.
      _Sammy_ · 2 years ago
      Hi Mark,

      Thanks for posting this amendment - found so many codes for closing inactive workbooks, but all of them seemed to affect the one you don't want to close!

      I'm very new to VBA, so I'm not sure how the code would work to replace the wording 'ActiveWorkbook' within the module. I've tried to replace the wording with 'Xwb' but that doesn't change anything and I may be being daft. Would you mind posting a copy of the code please?

      Thanks
    • To post as a guest, your comment is unpublished.
      crystal · 2 years ago
      Hi Mark,
      Thank you for sharing.
  • To post as a guest, your comment is unpublished.
    VR · 2 years ago
    This does not work when focus in on a particular cell in a sheet. Use case is when user is typing in a cell and leave the excel open with the cursor inside the cell.
    • To post as a guest, your comment is unpublished.
      Rehan · 2 years ago
      Were you able to find a fix for this by any chance?
  • To post as a guest, your comment is unpublished.
    henry · 3 years ago
    Hi Thanks loads for this code. Just one issue. It seems to try to close all open workbooks thus stalls if another workbook close is cancelled or not responded to. have you any touch-ups that can fix this?
    • To post as a guest, your comment is unpublished.
      crystal · 3 years ago
      Hi Henry,
      The code has been updated with the problem solving. Please have a try. Sorry for the inconvenience and thank you for your comment.
    • To post as a guest, your comment is unpublished.
      Gaston · 3 years ago
      I have the same issue... I tried to open a new workbook, and entered some data.... when the time came, both workbooks were closed, but the new one wasn´t saved... Is there a way to fix this?
      Besides that, it works great!! Thanks a lot!!
      • To post as a guest, your comment is unpublished.
        crystal · 3 years ago
        Hi Gaston,
        The code has been updated with the problem solving. Please have a try. Sorry for the inconvenience and thank you for your comment.