¡Hola, Félix!
Es cierto que el comando
`DoCmd.RunCommand acCmdCompactDatabase` puede no funcionar directamente en algunos contextos de código VBA en Access debido a que es un comando específico del entorno de interfaz de usuario. Sin embargo, puedes usar un enfoque diferente para lograr la compactación y reparación de la base de datos en código VBA.
Puedes utilizar la función
`DBEngine.CompactDatabase` para compactar y reparar la base de datos desde código VBA. Aquí tienes un ejemplo de cómo hacerlo:
Asegúrate de guardar una copia de seguridad de tu base de datos antes de ejecutar el código, ya que este proceso cambia el nombre de la base de datos original y podría haber pérdida de datos si algo sale mal.
Este código crea una copia compactada y reparada de la base de datos original, cierra la base de datos actual, renombra la copia compactada para reemplazar la original y luego vuelve a abrir la base de datos.
Ten en cuenta que el ejemplo utiliza
`DAO.DBEngine.120`, que corresponde a la versión 12.0 de la biblioteca de acceso a datos de DAO. Asegúrate de que sea la versión adecuada para tu entorno. También, podrías necesitar ajustar rutas y nombres de archivo según tus necesidades.
¡Espero que esto te sea de ayuda!