Se que manualmente tengo que abrir la BD de modo exclusivo para poder compactarla, pero a traves de macros puedo hacerlo aun si se encuentra conectada a otro archivo de excel?
Copio mi rutina (tomada prestada) para compactar, que se ejecuta sin errores pero compacta cuando quiere:
Sub compactar_base_de_datos()si no se pudiera compactar mi BD estando conectada a otro archivo de la red, como puedo cortar dicha coneccion del otro ordenador, desde mi PC para luego compactar la BD con una rutina?
'Si hay errores, que continúe
On Error Resume Next
'definimos la ruta y el nombre de la base de datos
base = ThisWorkbook.Path & "\Prueba_BD.mdb"
'creamos el objeto FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
'si hemos informado de la base de datos...
If fso.FileExists(base) Then
'creamos el objeto JetEngine
Set oje = CreateObject("JRO.JetEngine")
'compactamos la base de datos,
'con una copia de respaldo
oje.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
base, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ruta & _
"base_temporal.mdb"
'copiamos reemplazando y borramos
'la copia de la base de datos
fso.CopyFile ruta & "base_temporal.mdb", base
fso.DeleteFile (ruta & "base_temporal.mdb")
'eliminamos el objeto
Set oje = Nothing
'creamos un mensaje para mostrarlo al final
'mensaje = "La base de datos " & base & "," & _
'Chr(13) & "ha sido compactada."
Else
'Si no existe la base de datos, o
'la ruta es incorrecta, mostraremos un
'mensaje distinto
mensaje = "Base de datos o ruta, incorrecta."
End If
'eliminamos el objeto
Set fso = Nothing
'mostramos el mensaje
'MsgBox (mensaje)
End Sub
Muchas Gracias