Excel – Gravando histórico de alterações na planilha

O código abaixo possibilita gravar as alterações efetuadas em uma planilha do Excel, gerando um log de alterações. Muito útil quando se quer monitorar e controlar as ações dos usuários em planilhas coorporativas.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim wsHist As Worksheet, Rng As Range
    Set wsHist = Sheets("História")
    If Sh Is wsHist Then Exit Sub
    Set Rng = wsHist.Range("A" & Rows.Count).End(xlUp).Offset(1)
    With Rng
        .Value = Now
        .Offset(, 1) = Sh.Name
        .Offset(, 2) = Target.Address
        If Target.Cells.Count > 1 Then
            .Offset(, 3) = "Valores Alterados"
        Else
            .Offset(, 3) = Target.Formula
        End If
    End With
End Sub

Este código deve ser colocar dentro do módulo EstaPasta_de_trabalho (ThisWorkbook).

Todas as alterações são registradas em uma planilha chamada História que possui a seguinte configuração:

Basta começar a navegar por outras planilhas para ver o resultado.

<< Download da planilha >>

Abraços

Felipe Dasi

Comentários

comentários

7 thoughts on “Excel – Gravando histórico de alterações na planilha”

  1. Felipe td joia?

    Excelente código. Esta me ajudando bastante no desenvolvimento de uma rotina.

    Preciso de uma ajuda, quando coloco um link DDE no excel e existe uma mudança de valor na celula, ele nao esta considerando a mudança somente quando dou enter. Sabe como devo proceder para implementar esta funcionalidade?

  2. Olá,
    Parabéns pela planiha, muito útil. É possivel gravar alterações sem ser valores numéricos ou alfabéticos??por exemplo: cor da célula.

    Obrigado.

  3. Daniel,

    Me ajudou bastante essa sua postagem. Precisei desse código com certa urgência e como está simples e rápido de fazer, me trouxe sucesso! Obrigada pela ajuda!

    Abraços,

    Raquel Lamas.

  4. Pessoal, muito bom o código, fiz algusn testes e deu tudo certo. Apenas fiquei com uma dúvida. No histórico quando excluimos ou adicionamos uma linha ocorre a mesma menssagem (“Valores Alterados”). Teria como diferencia-los?

    abs e Obrigado.

  5. Boa tarde

    Faço uso de uma planilha compartilhada para vários usuários e estarei ausente durante um período. Assim, por não conseguir monitorá-la, precisarei saber ao voltar quais alterações foram feitas e por quais usuários.

    Sendo assim, há algum mecanismo que eu possa utilizar e que mantenha todas as alterações feitas (sem exceção) durante o período em que a planilha estiver compartilhada, sendo alterada e salva por outros usuários?

    Eu descobri que clicando em “Controlar Alterações”, “Realçar alterações”, e “Listar alterações em uma nova planilja”, passo a ter acesso às alterações feitas, porém limitadas até que eu salve a planilha objeto das alterações.

    Como isso limita o que será arquivada no histórico, gostaria de saber se é possível criar um histórico automático e permanente de alterações.

    Obrigado!

Comments are closed.