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