He estado intentando descifrar este problema, y parece que no puedo encontrar la solución al problema en ninguna parte. Aquí estaba la primera parte: VBA Shell command always returns "File Not Found" En esa pregunta, no encontraba la aplicación en la carpeta% APPDATA% por alguna razón extraña, probablemente una configuración de seguridad.VBA: Cómo ejecutar otra aplicación desde MS Access
Desde entonces, he movido la herramienta de importación al mismo directorio en el que guardo la base de datos, con la pequeña esperanza de que funcione correctamente.
Mi objetivo es hacer clic en un botón en MS Access y hacer que ejecute mi herramienta de importación directamente. En este momento, lo tengo abriendo la carpeta que contiene la herramienta. Esto funciona en mi máquina de desarrollo que tiene privilegios de administrador, pero no funciona en otras máquinas sin privilegios de administrador. El código en este momento se ve algo como lo siguiente:
Dim hProcess as Long
Dim myPath as String
Dim ex as String
ex = "C:\WINDOWS\explorer.exe "
myPath = Environ("ProgramFiles(x86)") & "\mytool\"
hProcess = Shell(ex & myPath, vbNormalFocus)
Esto permite que la carpeta que contiene el archivo que se abrirá, pero sólo en las cuentas de máquina que tienen privilegios de administrador. Al ejecutar esto en una cuenta de máquina que tiene menos de privilegios completos, simplemente no hace nada.
También he intentado el siguiente:
Dim hProcess As Long
Dim myPath as String
myPath = Environ("ProgramFiles(x86)") & "\mytool\mytool.exe"
hProcess = Shell(myPath, vbNormalFocus)
En esta sección se "parece" a trabajar en que se cargue la aplicación "mytool.exe" cuando miro el gestor de procesos. Sin embargo, después de unos segundos (quizás 20), aparece un cuadro de diálogo que indica que la aplicación "mytool.exe" ha dejado de funcionar.
Una cosa a tener en cuenta aquí es que tengo privilegios de administrador en mi máquina de desarrollo, pero tengo todos los privilegios en mi máquina doméstica. En mi máquina doméstica, este segundo código funciona sin problemas. En mi máquina de desarrollo, se bloquea, mientras que en una máquina de usuario restringido, no hace nada en absoluto.
¿Hay alguna sugerencia sobre cómo abrir esta aplicación desde MS Access utilizando privilegios que no sean de administrador? Ya sea para ejecutar la aplicación directamente o, al menos, para abrir la carpeta en la que reside dicha aplicación.
Gracias!
P.S. He intentado con el código ShellAndWait y RunApplication que se encuentra en stackoverflow, ninguno de los cuales funciona en esta instancia.
¿Este trabajo con VBA? Sé que muchas instrucciones de VB en el conjunto no tienen contrapartes en VBA. –
Lo probé en VBA, pero no tengo idea si funcionará en su situación. Todo lo que puedo decir es que se ejecutó en VBA en la PC de mi casa. – Fionnuala
Aparece un error de "Método o Datamember no encontrado" en el método objShell.Namespace(). Además, no sé qué dimensionar objFolder y objFolderItem como. Actualmente, están dimensionados como Variant. –