VBA Access | Como Auto-Compactar o arquivo ACCDB

VBA Access | Como Auto-Compactar o arquivo ACCDB

Aqui está um código VBA que você pode usar para auto-compactar o arquivo .accdb assim que ele for aberto. O código deve ser colocado em um módulo e será executado automaticamente na abertura do banco de dados.


Código VBA para Compactar Banco de Dados ao Abrir

 Private Sub CompactarAoAbrir()


    Dim strPath As String

    Dim strBackupPath As String

    Dim strTempDB As String


    On Error GoTo TrataErro


    ' Caminho completo do banco de dados atual

    strPath = CurrentDb.Name


    ' Caminho do backup antes de compactar

    strBackupPath = Left(strPath, Len(strPath) - 6) & "_backup_" & Format(Now, "yyyymmdd_hhmmss") & ".accdb"


    ' Caminho do banco de dados temporário usado para a compactação

    strTempDB = Left(strPath, Len(strPath) - 6) & "_temp.accdb"


    ' Cria uma cópia de segurança do banco de dados

    FileCopy strPath, strBackupPath


    ' Fecha o banco de dados atual para permitir a compactação

    Application.SetOption "Auto compact", False

    Application.Quit


    ' Compacta o banco de dados atual para o arquivo temporário

    DBEngine.CompactDatabase strPath, strTempDB


    ' Substitui o banco de dados original pelo arquivo compactado

    Kill strPath

    Name strTempDB As strPath


    ' Reabre o banco de dados original compactado

    Shell "msaccess.exe """ & strPath & """", vbNormalFocus


    Exit Sub


TrataErro:

    MsgBox "Erro durante a compactação: " & Err.Description, vbCritical

End Sub



Como Usar

Colocar o Código no Módulo:

Abra o Access.

Pressione Alt + F11 para abrir o Editor VBA.

 

Insira o código acima em um módulo novo ou existente.

Adicionar a Função ao Evento de Abertura:

No Editor VBA, expanda Formulários no painel de navegação.

Clique com o botão direito em Formulário Inicial, selecione Visualizar código.

No menu suspenso à esquerda, selecione Form, e à direita, Open.

Chame a função CompactarAoAbrir no evento Form_Open.

 


Private Sub Form_Open(Cancel As Integer)
    CompactarAoAbrir
End Sub


Desativar a Opção de Compactação Automática do Access:

O Access possui uma opção de compactação automática ao fechar, mas essa função será desabilitada pelo código Application.SetOption "Auto compact", False. 

Isso é necessário para evitar conflitos com a compactação personalizada ao abrir o banco de dados.


Explicação do Código

Criação de Backup:

O banco de dados atual é copiado para um arquivo de backup com a data e hora da execução.

Compactação:

O banco de dados é compactado em um arquivo temporário.
O arquivo original é substituído pelo banco de dados compactado.

Reabertura do Banco:

Após a compactação, o banco de dados é reaberto automaticamente para continuar o uso normal.

Tratamento de Erros:

Se ocorrer algum erro durante a compactação, o erro é tratado e uma mensagem de erro é exibida.

Este código garante que o banco de dados seja compactado automaticamente toda vez que for aberto, ajudando a manter o desempenho e a integridade do banco de dados.

 Clique aqui e nos contate via What's App para avaliarmos seus projetos 

Envie seus comentários e sugestões e compartilhe este artigo!
brazilsalesforceeffectiveness@gmail.com


 Série Donut Project 
DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes


 Clique nas capas abaixo e compre também: 

DONUT PROJECT: VBA - Projetos e Códigos de Visual Basic for Applications (Visual Basic For Apllication)


Série Top 10 Funções: Top 10 Funções VBA para o Microsoft Excel (Série Top 10 Funções - Microsoft Excel)


eBook - DONUT PROJECT 2024 - Volume 03 - Funções Financeiras - André Luiz Bernardes

eBook - DONUT PROJECT 2024 - Volume 02 - Conectando Banco de Dados - André Luiz Bernardes

eBook - DONUT PROJECT 2024 - Volume 01 - André Luiz Bernardes

Nenhum comentário:

Postar um comentário

diHITT - Notícias