database vba ms-access access-vba ms-access-2003

database - Código VBA para cerrar una base de datos de acceso sin dejar un shell de la aplicación abierta



ms-access access-vba (7)

De acuerdo con la documentación: Application.Quit hace lo mismo que DoCmd.Quit . A saber

El método Quit sale de Microsoft Access. Puede seleccionar una de varias opciones para guardar un objeto de base de datos antes de salir.

Puede intentar llamar a cualquiera de ellos con el parámetro acQuitSaveNone o 2 que "cierra Microsoft Access sin guardar ningún objeto". Tras una revisión posterior, use Application.Quit como DoCmd.Quit se agregó para compatibilidad con versiones anteriores para Access 95 (consulte los comentarios para el método de abandono, ya que se aplica al objeto DoCmd). Hacer cualquiera de estos debe hacer un compacto automático al cerrar si tiene los permisos, que pueden ser la causa de tus proyectiles.

Si eso no funciona para usted, aquí hay una sugerencia algo extrema. Guárdelo como un archivo vbscript y llámelo una vez que haya terminado con Access. Esto terminará todos los procesos de MSAccess en su PC con Windows, sin compactar ni reparar.

strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!//" & strComputer & "/root/cimv2") Set colProcessList = objWMIService.ExecQuery _ ("SELECT * FROM Win32_Process WHERE Name = ''msaccess.exe''") For Each objProcess in colProcessList objProcess.Terminate() Next

Llamar a la secuencia de comandos reemplazando [vbspath] con la ruta real. Si la ruta tiene espacios, asegúrese de usar comillas dobles y ponerlo entre comillas:

shell "cscript [vbspath]"

Actualmente estoy usando Application.Quit que deja abierto un shell de la aplicación MS Access.

Después de procesar la función de llamada en contra de la aplicación de destino, me quedan todas las instancias de la aplicación que aún permanecen abiertas; aunque la instancia específica de la base de datos esté cerrada.

¿Cómo cierro programáticamente la ventana de la aplicación ''shell'' de la base de datos usando VBA?

Aquí hay un ejemplo de cómo se crea la variable y cómo la estoy cerrando:

Dim appAccess As New Access.Application '' Do stuff here... appAccess.CloseCurrentDatabase


Siempre uso DoCmd.Quit acQuitSaveAll .
Esto funciona al menos en Access 2000, 2003 y 2010 (ahí es donde lo he visto funcionar).


Access.Quit funciona para mí. Tal vez intente eso en lugar de Application.Quit ?

Si eso no lo resuelve, su problema puede estar en otra parte, en cuyo caso cuéntenos más sobre este proyecto.


¿Quiere decir que deja una ventana de shell cmd.exe abierta después de aparentemente finalizar y un proceso MSACCESS.EXE ejecutándose en segundo plano en TaskList? Y el shell se llama en el fondo?


Necesita ejecutar Application.Quit contra la variable de instancia.

Por ejemplo,

Dim appAccess As New Access.Application '' Do stuff here... appAccess.Application.Quit


DoCmd.Quit acQuitSaveAll, trabajado por fin. Probé todas las otras opciones antes y un caparazón todavía estaba colgando.


Cambia el formulario a la vista Diseño. Establezca la propiedad BorderStyle del formulario en None . En el menú Ver , haga clic en Vista de formulario . Tenga en cuenta que la barra de título del formulario se elimina por completo.