Abrir archivo pdf desde formulario haciendo click en el nombre del archivo Access

Tengo un formulario donde hay un Comando Cuadro de Texto que tiene como datos nombres de archivos. Estos archivos que son PDF están almacenados en una carpeta de un disco remoto (conectado por red). Como logro que al hacer click sobre el nombre del archivo en el formulario se abra el archivo correspondiente (por supuesto en acrobat reader).

Lo hice por hipertexto pero se abre la carpeta y no el archivo seleccionado aunque en la dirección me figura la ruta completa hasta el archivo pdf

1 respuesta

Respuesta
2

Con:

Application. FollowHyperlink Me. CuadroTexto

Te debería abrir, siempre que en le cuadro de texto tengas la ruta completa al archivo y con su extensión.

Si no fuera así, por ejemplo en el cuadro de texto guardas solo el nombre y extensión, y tienes todos los pdfs en una carpeta en la ruta "D:\ArchivosPDF\", sería:

Application.FollowHyperlink "D:\ArchivosPDF\" & Me.CuadroTexto

Si no tienes la extensión, tendrías que añadirla:

Application. FollowHyperlink Me.CuadroTexto & ".pdf"

Se me olvidaba, te lo abrirá con el Acrobat reader si es el programa predeterminado para abrir los pdfs, si tienes otro configurado como predeterminado, te lo abrirá con ese programa.

Hola Sveinbjorn, gracias por la rápida respuesta. 

Generé el evento pero me hace lo mismo, abre hasta la carpeta general pero no la que tiene los archivo y tampoco el archivo. Lo que no entiendo es lo de añadir la extensión.

La ruta es: \\196.1.1.3\gesambiental\#ExpElect  pero abre hasta gesambiental, ni siquiera la carpeta #ExpElect.

El evento es: Application.FollowHyperlink "\\196.1.1.3\gesambiental\#ExpElect" & Me.NRespuesta donde NRespuesta es el nombre del cuadro de texto.

Aclaro que la dirección es con la barra \ al final de la ruta, o sea

Application.FollowHyperlink "\\196.1.1.3\gesambiental\#ExpElect\" & Me.NRespuesta

Si agrego a continuación 

Application.FollowHyperlink Me.NRespuesta & ".pdf"  abre un cuadro que indica error 490 en tiempo de ejecución.

La ruta de red es correcta, y al nombre de archivo le saqué los espacios con guiones bajos para probar. No debería marcar ese error

El problema es haber usado la almohadilla como parte del nombre de una carpeta... Como los hipervínculos separan sus distintos elementos usando la almohadilla, al correr el código interpreta que la dirección a abrir es todo lo que va antes de la almohadilla (y por eso te abre la carpeta anterior)

Antes de darte un solución alternativa, te explico cosas sobre el funcionamiento de los hipervínculos, y de paso te respondo también a lo de la extensión:

Supongamos que la ruta es esta: \\196.1.1.3\gesambiental\ExpElect, es decir, la que tienes sin la almohadilla.

1º/ Si en el campo NRespuesta tienes el nombre del archivo, por ejemplo Analitica 2019-04-10.pdf, es decir, nombre y extensión, el código sería:

Application.FollowHyperlink "\\196.1.1.3\gesambiental\ExpElect\" & Me.NRespuesta

2º/ Si en el campo NRespuesta tienes soloel nombre del archivo, por ejemplo Analitica 2019-04-10, es decir, nombre sin extensión (falta el .pdf), el código sería:

Application.FollowHyperlink "\\196.1.1.3\gesambiental\ExpElect\" & Me.NRespuesta & ".pdf"

3º/ Si en el campo NRespuesta tienes el nombre del archivo, con su extensión y la ruta completa, por ejemplo \\196.1.1.3\gesambiental\ExpElect\Analitica 2019-04-10.pdf, el código sería:

Application. FollowHyperlink Me. NRespuesta

Lo que no puedes hacer es:

Application.FollowHyperlink "\\196.1.1.3\gesambiental\ExpElect\"

Application. FollowHyperlink Me. NRespuesta

Para abrir primero la carpeta y luego el archivo. En ese caso, te abrirá la carpeta sin problema (primera linea del código) pero en la segunda te saltará el error 490 (no se puede abrir al archivo) porque en la carpeta donde tienes la BD no existe el archivo.

Y ahora la alternativa, olvídate del FollowHyperlink (a menos que quieras/puedas eliminar ese # del nombre de la carpeta) y usa ShellExecute para abrir el archivo. Te dejo un enlace a un ejemplo de Neckkito en el que explica con detalle cómo usarlo: http://neckkito.xyz/nck/index.php/ejemplos/18-codigo/154-shellexecute

Gracias nuevamente. Debe haber algún problema con la red ya que saqué la almohadilla y dejé tal cual el ejemplo 2. Me da el error 490. 

Cambié al ejemplo 1 agregando .pdf al nombre del archivo y volvió a dar el mismo error.

No tengo ni idea el por qué

¿Probaste la alternativa del ShellExecute?

Otra cosa que puedes probar es asignar un nombre a la unidad de red (por ejemplo Z) y usar la ruta en el código: Z:\\gesambiental\ExpElect\

Lo del error no te puedo indicar si debes usar la alternativa 1 o la 2, porque desconozco lo que guardas en el cuadro de texto. Obviamente una de las dos te tiene que dar error, porque en una le faltará el ".pdf" o en la otra le sobra... XD

Si, probé pero no pasa nada. Lo que no veo en esta instrucción es donde es que está el enlace a la red (archivo).

Por supuesto que coloque Me.NRespuesta.Value

Tienes que indicar también la ruta:

miArchivo = "\\196.1.1.3\gesambiental\ExpElect\" & Me.NRespuesta

Y tu sabrás si tienes que añadir el ".pdf" o no

¡Gracias! a tu ayuda lo pude lograr. 

Con el ShellExecute

Dim miArchivo As String

miArchivo = "\\196.1.1.3\gesambiental\ExpElect\" & Me.NRespuesta & ".pdf"

If IsNull(miArchivo) Then Exit Sub
Call ShellExecute(Me.hwnd, "Open", miArchivo, "", "", 1)

Un abrazo y gracias nuevamente por la paciencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas