VBA Access | Como Copiar Todas as Tabelas Contidas no Arquivo ACCDB

 VBA Access | Como Copiar Todas as Tabelas Contidas no Arquivo ACCDB


Este código VBA copia todas as tabelas contidas no banco de dados Access, renomeando-as, e cria uma tabela de log, caso não exista, para registrar a execução do backup:

Sub CopiaTabelasComRenomeacao()

    Dim db As DAO.Database
    Dim tdf As DAO.TableDef
    Dim nomeTabela As String
    Dim nomeTabelaCopia As String
    Dim dataHora As String
    Dim rs As DAO.Recordset

    On Error GoTo TrataErro

    ' Abre o banco de dados atual
    Set db = CurrentDb

    ' Formata a data e hora atual para usar no nome das tabelas copiadas
    dataHora = Format(Now, "yyyymmdd_hhmmss")

    ' Percorre todas as tabelas no banco de dados atual
    For Each tdf In db.TableDefs
        nomeTabela = tdf.Name
        
        ' Ignora as tabelas de sistema (começam com "MSys")
        If Left(nomeTabela, 4) <> "MSys" Then
            ' Define o novo nome da tabela com a data e hora incluída
            nomeTabelaCopia = nomeTabela & "_" & dataHora
            
            ' Copia a tabela com o novo nome
            db.Execute "SELECT * INTO [" & nomeTabelaCopia & "] FROM [" & nomeTabela & "]"
            
            ' Registra a cópia na tabela de log
            Call RegistraLog(db, "Cópia de Tabela", "Tabela '" & nomeTabela & "' copiada como '" & nomeTabelaCopia & "'")
        End If
    Next tdf

    MsgBox "Cópias de tabelas concluídas com sucesso."

    ' Limpeza de variáveis
    Set tdf = Nothing
    Set db = Nothing

    Exit Sub

TrataErro:
    ' Registra o erro na tabela de log
    Call RegistraLog(db, "Erro durante cópia", Err.Description)
    MsgBox "Ocorreu um erro: " & Err.Description, vbCritical

End Sub

Sub RegistraLog(ByVal db As DAO.Database, ByVal acao As String, ByVal descricao As String)

    Dim rs As DAO.Recordset

    ' Abre ou cria a tabela de log
    On Error Resume Next
    Set rs = db.OpenRecordset("tblBackupLog", dbOpenTable)
    If Err.Number <> 0 Then
        ' Cria a tabela de log se não existir
        db.Execute "CREATE TABLE tblBackupLog (ID COUNTER PRIMARY KEY, Acao TEXT(255), Descricao TEXT(255), DataHora DATETIME)"
        Set rs = db.OpenRecordset("tblBackupLog", dbOpenTable)
    End If
    On Error GoTo 0

    ' Adiciona um novo registro de log
    rs.AddNew
    rs!Acao = acao
    rs!Descricao = descricao
    rs!DataHora = Now
    rs.Update

    rs.Close
    Set rs = Nothing

End Sub

Explicação do Código

Conexão com o Banco de Dados

O código abre o banco de dados atual (CurrentDb).

Renomeação e Cópia das Tabelas:

Cada tabela no banco de dados é percorrida usando um loop For Each.

O nome da cópia da tabela é gerado adicionando a data e hora ao nome original da tabela.

A cópia é feita utilizando a instrução SELECT INTO.

Registro de Logs:

A função RegistraLog é usada para registrar cada operação de cópia em uma tabela de log chamada tblBackupLog. Se essa tabela não existir, ela é criada automaticamente.

Os registros incluem a ação realizada e uma descrição, juntamente com a data e hora da operação.

Tratamento de Erros:

O código captura e trata erros, registrando qualquer problema na tabela de log e informando o usuário via MsgBox.

Como Usar

Invocação: Execute este código diretamente no Access para criar cópias de todas as tabelas no banco de dados, com nomes renomeados para incluir a data e hora da cópia.

Logs: Consulte a tabela tblBackupLog para ver o histórico de cópias e qualquer erro que possa ter ocorrido.

Este código é útil para criar cópias de segurança das tabelas no próprio banco de dados, mantendo um histórico de backups realizados e facilitando a rastreabilidade.

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

Envie 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