El siguiente código de VBasic sirve para compactar Bases de Datos Access. Colocarlo en el procedimiento de evento de un botón de comando de un formulario en el evento "Al hacer click".
----------------------------------------------------------------------------------------------
Private Sub Comando1_Click()
On Error Resume Next
Dim Base As Database
Set Base = OpenDatabase("c:\Nombre_Carpeta\Nombre_BaseDatos.mdb")
Base.Close: DoEvents
If Dir("C:\Nombre_Carpeta\Temporal.mdb") <> "" Then Kill "C:\Nombre_Carpeta\Temporal.mdb"
CompactDatabase "C:\Nombre_Carpeta\Nombre_BaseDatos.mdb", "C:\Nombre_Carpeta\Temporal.mdb"
Kill "C:\Nombre_Carpeta\Nombre_BaseDatos.mdb"
Name "C:\Nombre_Carpeta\Temporal.mdb" As "C:\Nombre_Carpeta\Nombre_BaseDatos.mdb"
End Sub
----------------------------------------------------------------------------------------------
Nombre_Carpeta es la Carpeta donde se encuentra la Base de Datos a compactar.

Nombre_BaseDatos.mdb es el nombre de la Base de Datos a compactar.

Temporal.mdb es la Base de Datos que el procedimiento crea temporalmente, y que es la que realmente se compacta y posteriormente vuelve a recuperar su nombre original.

Con este código sólo podemos compactar Bases de Datos cerradas, desde una creada expresamente para tal fin.

Es aconsejable probar primero con COPIAS de Bases de Datos, ya que si nos equivocamos en algo al teclear el procedimiento, podemos inutilizar o perder la Base de Datos de forma irrecuperable.

Espero que te vaya bien.

Saludos
Enrique






    Source: geocities.com/es/ensolva/Descargas/Documentos

               ( geocities.com/es/ensolva/Descargas)                   ( geocities.com/es/ensolva)                   ( geocities.com/es)