Este post foi originalmente publicado em http://officevbavsto.blogspot.com/2011/03/vba-access-compactar-e-restaurar-banco.html.

Hoje, eu escrevo sobre como executar o recurso de compactar e restaurar banco de dados do Microsoft Access usando VBA no Microsoft Excel.

Veja o código abaixo:

Sub CompactDb()

   Dim jetEng As Object 'JRO.JetEngine
   Dim strCompactFrom As String
   Dim strCompactTo As String
   Dim strPath As String
  
   strPath = ThisWorkbook.Path & "\"
   strCompactFrom = "Database1.mdb"
   strCompactTo = "Database1Comp.mdb"

On Error GoTo HandleErr
   Set jetEng = CreateObject("JRO.JetEngine") '= New JRO.JetEngine
   jetEng.CompactDatabase "Data Source=" & strPath & strCompactFrom & ";", "Data Source=" & strPath & strCompactTo & ";"
   Kill strPath & strCompactFrom
   Name strPath & strCompactTo As strPath & strCompactFrom

ExitHere:
   Set jetEng = Nothing
   MsgBox "Compactação completa."
   Exit Sub
   
HandleErr:
   MsgBox Err.Number & ": " & Err.Description
   Resume ExitHere
   
End Sub

Esse código copia os dados (já compactados) do banco de dados original para um novo banco de dados. Apaga o banco de dados original e renomeia o novo para o mesmo nome do banco de dados original.

  • strPath: nessa variável você define o caminho onde está o banco de dados;
  • strCompactFrom: aqui você define o nome do seu banco de dados;
  • strCompactTo: aqui você define um novo nome temporário para seu banco de dados.

Muito útil para quem trabalha com o Microsoft Access. Esse código deixei preparado para você executar de dentro do Excel (por isso que tem o ThisWorkbook.Path).

Créditos

Image by mcmurryjulie from Pixabay