Excel - Cierre de un XLSM y solo ese fichero.

 
Vista:
sin imagen de perfil

Cierre de un XLSM y solo ese fichero.

Publicado por Ramón (77 intervenciones) el 11/12/2023 12:52:04
Desde un ÚNICO procedimiento Sub que se ejecuta Al Hacer Clic en un CommandButton ubicado en una hoja de determinado xlsm, he programado: a) Que se copie a un nuevo xlsx el contenido de una de las hojas del libro xlsm y b) Que al final del proceso se abra un fichero de access accdb 'prediseñado', en el que como origen de datos figura VINCULADA la hoja única del xlsx creado en el paso a).

La apertura del fichero accdb la efectúo con el código:
1
2
3
 'UNA VEZ CREADOS LOS FICHEROS DE VINCULACIÓN CON ACCESS ABRO EL FICHERO .ACCDB:
            AppAccess.OpenCurrentDatabase ("C:\MiPrograma\MiFichero_ACCESS.accdb")
            AppAccess.Visible = True

... habiendo declarado previamente la variable AppAccess a nivel de módulo como un "New Access.Application", claro.

El caso es que pretendía como paso final del procedimiento cerrar el xlsm desde el que he ejecutado todo el código anterior, con una suerte de:
1
Workbooks("MiAplicación.xlsm").Close SaveChanges:=True
, pero inesperadamente -al menos lo es para mí- si cierro el xlsm también se cierra el accdb que ha aparecido en primer plano y que quiero permanezca abierto.


P.S.- Se me ocurre que como alternativa a lo pretendido el procedimiento podría crear en el escritorio un acceso directo al fichero accdb, siempre que sobreescriba el acceso directo creado en una sesión de vinculación/exportación anterior, pues no es el caso de acumular accesos directos (1) (2) (3)... apuntando al mismo fichero... pero tampoco esto sé cómo hacerlo...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Cierre de un XLSM y solo ese fichero.

Publicado por LG Des (4 intervenciones) el 12/12/2023 11:45:18
Hola:

En 'MiAplicación.xlsm' o en otro sitio ¿no tendrás algún 'evento' que al cerrar(se)/guardar(se) también cierre AppAccess?

Puedes comprobarlo si antes de guardar desactivas los eventos:

1
2
3
Application.EnableEvents = False
WorkBooks("...").Close SaveChanges:=True
Application.EnableEvents = True

Espero que te sirva

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Cierre de un XLSM y solo ese fichero.

Publicado por Ramón (77 intervenciones) el 12/12/2023 13:21:16
Gracias LG Des por responder pero no ha habido suerte.

Tras incorporar al código lo que me has sugerido veo que me sigue cerrando ACCESS a la vez que mi xlsm, aunque en esta ocasión me deja abierta la ventana de Excel pero sin ninguna 'ventana de documento' dentro.

Tratando de seguir la pista que me has dado de que pudiera haber algún código asociado a algún evento de la aplicación que pudiera estar ordenando el cierre de ACCESS, he repasando el código del objeto ThisWorkBook, especialmente el asociado al evento BeforeClose, en él he comentado un "Application.Quiet' por si acaso... pero nada...

La pista que me das intuyo que es buena, pero no veo qué código asociado a qué evento puede estar interfiriendo en todo esto...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Cierre de un XLSM y solo ese fichero.

Publicado por Antoni Masana (2478 intervenciones) el 12/12/2023 14:14:55
Buenas,

El problema que tienes con el Access tiene difícil solución por la forma en que se abre al Access, me explico por que va ser difícil de explicar y de entender.
Al abrirlo desde el Excel en realidad no abres la aplicación como tal sino un enlace entre el Excel y al Access, digamos como un puente, al cerrar uno de los extremos se corta el enlace.
Digamos que es como si una macro abre varios libros de Excel y finaliza cerrando el Excel, esto causa el inmediato cierre de todos los libros abiertos.

No he trabajado en este tema, solo hice una vez un enlace de Excel con Access para importar datos de una tabla y lo que hacía no era abrir el Access como lo abre cuando le pulso al icono sino un canal de comunicación que se cortaba al cerrar el libro, bueno en realidad antes por que hacia close.

Si quieres dejar el Access abierto no tienes que abrir un vinculo, tienes que abrir la aplicación.

En Visual Basic seria algo así:

1
Shell "C:\...\Access.exe"

Con macros de Excel no lo se como se puede hacer y tampoco puedo buscar una opción porque no tengo Access.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Cierre de un XLSM y solo ese fichero.

Publicado por Ramón (77 intervenciones) el 12/12/2023 16:43:21
Gracias, Antoni, la verdad es que estaba huyendo de utilizar un Shell: Microsoft coloca el ejecutable de ACCESS en una ruta diferente dependiendo de la versión de Office...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cierre de un XLSM y solo ese fichero.

Publicado por LG Des (4 intervenciones) el 13/12/2023 15:28:19
Hola:

Por probar, mira de abrir el Access mediante CreateObject a ver que tal ;-)

1
2
Dim appAccess As Object
Set appAccess = CreateObject("Access.Application")

Lo único de esta forma de definir appAccess es que pierdes el Intellisense, pero como ya tienes todo el código funcionando, no debería haber problema.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar