Compactar BD Access 2007

Sencillo ejemplo de como compactar una BD de Access 2007

Hasta los momentos no conozco ningun Codigo VBA que Compacte una BD Access 2007, estando esta abierta

y oculta la ventana principal asi como la cinta de opciones

Mas sin embrago con Access 2003 si se puede hacer, Usando la funcion CommandBars

El Codigo:

CommandBars("Menu Bar").Controls("Herramientas").Controls _

("Utilidades de la base de datos").Controls _

("Compactar y reparar base de datos...").accDoDefaultAction

En 2007 podemos utilizar la funcion SendKeys, soli si tenemos la cinta de opciones Activada

El Codigo

SendKeys "%huo", False

Otra forma de compactar 2007 si tenemos oculta la Cinta de opciones y la ventana principal de Access, seria utilizar otra base de datos como Compactador y de alli llamar la Funcion CompactaBD

El Codigo

Function CompactaBD(strRutaBaseDatos As String) As Boolean

Dim strTemporal As String

On Error GoTo CompactaBD_TratamientoErrores

strTemporal = Environ("Temp") & "\TempDB" & Format(Now, "yymmddhhss") & ".accdb"

DBEngine.CompactDatabase strRutaBaseDatos, strTemporal

Kill strRutaBaseDatos

Name strTemporal As strRutaBaseDatos

CompactaBD = True

CompactaBD_Salir:

On Error GoTo 0

Exit Function

CompactaBD_TratamientoErrores:

Select Case Err.Number

Case 3356

MsgBox "La Base de Datos está abierta, Por favor cierre todas" & vbCrLf & "las instancias de la base de datos e intentelo de nuevo", vbCritical + vbOKOnly, "ATENCION"

Case Else

MsgBox "Error " & Err & " en proc.: CompactaBD de Módulo: Módulo1 (" & Err.Description & ")", vbCritical + vbOKOnly, "ATENCION"

End Select

CompactaBD = False

Resume CompactaBD_Salir

End Function