Apertura no en exclusivo desde un .bat
Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86607
Fecha de impresión: 26/Marzo/2026 a las 17:28
Tema: Apertura no en exclusivo desde un .bat
Publicado por: kepakete1
Asunto: Apertura no en exclusivo desde un .bat
Fecha de publicación: 21/Febrero/2023 a las 10:28
|
Buenos días a todos. Tengo un archivo .bat para iniciar una aplicación. Es para abrir dicha base de datos sólo desde este inicio. Así que el archivo bat tiene este contenido: @echo off
start/MIN C:\bd\Abrirprueba.ppsx TIMEOUT /T 3 /NOBREAK start C:\bd\"prueba.accde"
Esto abre una presentación de una sola página y luego la base datos. En el inicio de la BD, se comprueba que el archivo "Abrirprueba.ppsx" esta abierto. Si es así abre la Bd y cierra el archivo ppsx. Si no encuentra ese archivo abierto, no se abre la aplicación. Funciona estupendamente pero con un fallo que no se solucionar: abre la Base de datos en modo exclusivo, aunque esta configurada como compartida. ¿Qué puedo hacer para que la abra en modo compartido?. Es Access 2016
|
Respuestas:
Publicado por: Mihura
Fecha de publicación: 21/Febrero/2023 a las 10:53
|
¿Has probado a lanzar Access pasando como parámetro la aplicación que quieres abrir?
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: kepakete1
Fecha de publicación: 21/Febrero/2023 a las 10:58
|
Lo siento Mihura pero no entiendo lo que me quieres decir.
|
Publicado por: joanka
Fecha de publicación: 21/Febrero/2023 a las 11:45
|
Hola,
Prueba lo siguiente:
@echo off ping -n 2 localhost > null "C:\bd\Abrirprueba.ppsx" > nul 2>&1 TIMEOUT /T 3 /NOBREAK "C:\bd\prueba.accde"> nul 2>&1
|
Publicado por: kepakete1
Fecha de publicación: 21/Febrero/2023 a las 11:57
|
Muchas gracias. Lo he probado pero sigue haciendo lo mismo. La abre en modo exclusivo. (Si la abro por el método tradicional l abre en modo compartido)
|
Publicado por: kepakete1
Fecha de publicación: 21/Febrero/2023 a las 12:03
|
Creo que no lo he indicado. Trabajo en un entorno de red compartido. En el código que he puesto, en la ruta he puesto C: pero realmente es F:. Pero la prueba que he hecho, la he hecho bien.
|
Publicado por: joanka
Fecha de publicación: 21/Febrero/2023 a las 12:41
|
Hola,
Lo he probado con la configuración de cliente en Compartido y no me lo cambia, podría ser la extensión.
Cambia la extensión .accde a .accdr y pruébalo.
|
Publicado por: kepakete1
Fecha de publicación: 21/Febrero/2023 a las 12:57
|
No. Lo he probado con accdr y con accdb y sigue haciendo lo mismo. Sólo lo abre en un equipo.
|
Publicado por: joanka
Fecha de publicación: 21/Febrero/2023 a las 16:03
|
Hola,
Otra cosa, indicas que el archivo se abre en un entorno de red, en local, te hace lo mismo?
Yo tengo este sistema, pero el .bat y el archivo Access que abre, lo tengo en local en cada ordenador que tiene la BD, y abro el .bat desde otra base de datos de access. Las tablas las tengo en back-end, es mejor sistema para tener una base compartida y no que abran todos los usuarios el mismo archivo en red.
Ya no tengo más ideas, suerte!!!
|
Publicado por: Mihura
Fecha de publicación: 21/Febrero/2023 a las 17:25
|
Algo así (ajustando tus rutas):
C:\Program Files (x86)\Microsoft Office\Office14\MSACCESS.EXE C:\Access\MiPrograma.accdb
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: kepakete1
Fecha de publicación: 22/Febrero/2023 a las 10:42
|
Ahora si te he entendido Mihura, gracias. No puedo aplicar la solución ya que trabajamos en una intranet y no tenemos acceso a la unidad C:
|
Publicado por: Mihura
Fecha de publicación: 22/Febrero/2023 a las 10:48
|
Tienes que tener acceso, si no lo tienes no podrías lanzar un Access ¿no?.
Prueba con VBS (al fin y al cabo es bastante parecido a un bat), que sea el sistema el que te proporcione la ruta de programas.
Otra opción sería lanzar un programa Access que lanzara por automatización el que necesitas ...
P.D. ¿Es posible mandar a la hoguera pasarles el muerto a los chicos de Sistemas?
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: kepakete1
Fecha de publicación: 22/Febrero/2023 a las 12:32
Muchas gracias. Con lo del VBs estuve ayer por la tarde (no tengo ni idea) y si que estoy cerca de lo que quiero. De momento tengo este Vbs:Set objPPT = CreateObject("PowerPoint.Application") objPPT.Visible = True
objPPT.Presentations.Open ("O:\ADM\PRESENCIA 2023\presencia.ppsx")
Set acApp = CreateObject("Access.Application") acApp.Visible = True
acApp.OpenCurrentDatabase ("O:\ADM\PRESENCIA 2023\prueba.accde")
He hecho pruebas y efectivamente ya me abre la base compartida. ¡¡¡ Yuhuuuuu !!! Ahora sólo me queda que me quede "elegante", solucionando dos pequeños problemas: 1 Me abre el archivo Powerpoint no como una presentacion de diapositivas, sino como un archivo para editar (parpadeando en la barra de tareas). Esto es lo de menos, ya que ese archivo sólo lo utilizo como "llave" y una vez abierta la Bd, se cierra automaticamente. 2 - La Bd también me abre con el icono parpadeando en la barra de tareas. lo que obliga al usuario a clicar en él, para confirmar el mensaje de "Se identifico un posible problema de seguridad, puede tener contenido no seguro, ¿desea continuar?". Ese mensaje lo se quitar desde la BD Access en opciones, pero no se como quitarlo desde Vba, para que no lo muestre al abrirse (por aquello del centro de confianza). Y como son muy diferentes usuarios, la mayoría se haría un lio.
------------- Nunca te rindas
|
Publicado por: joanka
Fecha de publicación: 22/Febrero/2023 a las 17:30
|
Hola,
Mira este link a ver si te ayuda.
http://www.mvp-access.com/foro/resueltoquitar-avisos-seguridad-microsoft-office_topic84766.html" rel="nofollow - http://www.mvp-access.com/foro/resueltoquitar-avisos-seguridad-microsoft-office_topic84766.html
|
Publicado por: kepakete1
Fecha de publicación: 23/Febrero/2023 a las 14:26
|
Gracias joanka. Mirado y probado. Si me indica que ha creado el sitio de confianza, pero sigue saliendo el mensaje de seguridad. No encuentro la solución.
|
Publicado por: joanka
Fecha de publicación: 23/Febrero/2023 a las 16:09
|
Hola,
Yo la forma que saco esos mensajes solo es desde el centro de confianza de Access. Si es para distribuirlo, lo mejor es proporcionar instrucciones de como hacerlo, yo intenté estos métodos pero desistí.
El problema es si a quien le envías la base de datos trabaja con Access Runtime que no es configurable. La única forma de sacar esos mensajes es instalar Access provisionalmente, configurar el centro de confianza, y volver a desinstalarlo, la configuración queda guardada usando Access Runtime.
Un saludo,
|
Publicado por: kepakete1
Fecha de publicación: 23/Febrero/2023 a las 20:53
|
Gracias por tu atención joanka. La Base de datos esta en una intranet, es decir, en una carpeta a la que todos tenemos acceso. Hasta que no me he puesto a intentar abrirlo desde un archivo .bat o .vbs, no he tenido ningún problema. Pero ahora, por diversas circunstancias quiero abrirlo desde un archivo vbs. Y todo va bien salvo ese pequeño problema: que al abrirse la Bd, se queda sólo el icono en la barra de tareas parpadeando y es el usuario el que tiene que clicar sobre él y posteriormente darle a aceptar al tema de seguridad de macros, y a partir de ese momento todo funciona perfecto. Los usuarios más "avezados" no tendrán problema, pero como son muchos los nuevos que van pasando, se que no sería efectivo.
------------- Nunca te rindas
|
Publicado por: pitxiku
Fecha de publicación: 23/Febrero/2023 a las 23:00
|
Prueba dándole el control al usuario:
Set objPPT = CreateObject("PowerPoint.Application") objPPT.Visible = True objPPT.Presentations.Open ("O:\ADM\PRESENCIA 2023\presencia.ppsx")
Set acApp = CreateObject("Access.Application") acApp.UserControl = True acApp.OpenCurrentDatabase ("O:\ADM\PRESENCIA 2023\prueba.accde")
|
|
Publicado por: kepakete1
Fecha de publicación: 24/Febrero/2023 a las 09:25
|
Gracias pitxiku, pero sigue haciendo exactamente lo mismo
|
Publicado por: kepakete1
Fecha de publicación: 24/Febrero/2023 a las 10:56
Con conseguir que me abriese la aplicación al completo, no en un icono en la barra de herramientas, seria suficiente, porque el usuario ya esta acostumbrado a aceptar el mensaje de seguridad. Al abrirse sólo como icono la mayoría no sabe que es lo que tiene que hacer.
------------- Nunca te rindas
|
Publicado por: joanka
Fecha de publicación: 24/Febrero/2023 a las 20:31
|
Hola,
Has probado a cerrar el powerpoint al abrir la BD?
Set objPPT = CreateObject("PowerPoint.Application") objPPT.Visible = True objPPT.Presentations.Open ("O:\ADM\PRESENCIA 2023\presencia.ppsx")
Set acApp = CreateObject("Access.Application") acApp.Visible = True acApp.OpenCurrentDatabase ("O:\ADM\PRESENCIA 2023\prueba.accde")
objPPT.Quit
O cerrarlo desde la BD "prueba.accde", y maximizar el formulario de inicio al abrirla.
Yo creo que te lo mostraria.
|
Publicado por: pitxiku
Fecha de publicación: 24/Febrero/2023 a las 21:56
|
¿Tu base de datos tiene algo que debamos saber? Al abrirla, ¿se abre algún formulario modal u/o emergente?
Si no tienes ningún formulario modal en el arranque, puedes provocar desde el propio Access que se maximice la ventana con:
- Macro: EjecutarComandoDeMenú --> Acción: MaximizarAplicación - VBA: DoCmd.RunCommand acCmdAppMaximize
|
Publicado por: kepakete1
Fecha de publicación: 26/Febrero/2023 a las 17:03
|
Ante todo perdon por no haber contestado antes, pero he tenido el finde un poco liado. Creo que resumiendo se entiende mejor el problema. PLANTEAMIENTO: Se quiere abrir una base de datos que en el momento de la apertura comprueba que hay un determinado archivo abierto. Si es así, se abre y cierra dicho archivo, sino no se abre.
METODO CON BAT: start/MIN O:\ADM\PRESENCIA 2023\presencia.ppsx TIMEOUT /T 3 /NOBREAK start O:\ADM\PRESENCIA 2023\prueba.accde PROBLEMA: Todo va perfecto, pero abre la BD en modo exclusivo, cuando es necesario que sea compartido. PD.: Aqui también hay que aceptar el mensaje de la seguridad de macros, pero como la BD se abre a pantalla completa, el usuario sabe que las tiene que aceptar
METODO CON VBS: Set acApp = CreateObject("Access.Application") acApp.UserControl = True acApp.OpenCurrentDatabase ("O:\ADM\PRESENCIA 2023\prueba.accde") PROBLEMA: Ahora sí la abre en compartido, pero abre ambos archivos (la BD y el archivo de control) en icono en la barra de tareas, por lo que es necesario que el usuario clique sobre el de la Bd y acepte la seguridad de macros para que todo siga su proceso.
|
Publicado por: pitxiku
Fecha de publicación: 27/Febrero/2023 a las 22:30
|
He hecho varias pruebas y no consigo que se abra la base de datos en modo exclusivo, o que se abra minimizada en la barra de tareas. Tampoco dispongo de una red para hacer pruebas, que seguramente será mi problema. Porque supongo que si tú pruebas con los 2 archivos en local, no tienes ningún problema.
Así, cosas que se me ocurren para probar:
¿La base de datos está en una ubicación de confianza para todos los usuarios? ¿Los usuarios tienen permisos para crear, escribir y borrar en la carpeta donde está la base de datos? Si una persona de IT prueba con un usuario administrador, ¿también da problemas?
Por otro lado, la última prueba la he hecho con este código en vbs: no usa automatización, le puedes indicar que abra todo maximizado (el valor 3), y hay un pequeño temporizador de 3 segundos entre las 2 aperturas, cuyo tiempo puedes ajustar. A mí me abre los 2 archivos maximizados y sin avisos de seguridad. Y la base de datos no se abre en modo exclusivo. Eso sí, la base de datos está en una ubicación de confianza:
Set objShell = CreateObject("Shell.Application") objShell.ShellExecute "C:\Users\pitxiku\OneDrive\Documents\Access\Ejemplos foros\Arranque doble\Portada.pptx", "", "", "show", 3
Inicio = Timer
Do While Timer < Inicio + 3 'DoEvents Loop
Set objShell = CreateObject("Shell.Application") objShell.ShellExecute "C:\Users\pitxiku\OneDrive\Documents\Access\Ejemplos foros\Arranque doble\Base datos.accdb", "", "", "open", 3
|
|
Publicado por: kepakete1
Fecha de publicación: 28/Febrero/2023 a las 09:19
|
FENOMENAL !!! POR FIN. Solo he cambiado las rutas al ejemplo que has puesto y funciona todo perfectamente. No he cambiado nada más, ni el archivo .accde, ni zona de confianza ni nada. Muchas gracias pitxiku, no sabes la alegría que me has dado. Por supuesto muchas gracias a todos los demás que habéis contestado. Se puede cerrar el tema como solucionado.
|
|