Abrir PDF ubicado en una carpeta de red con VBA excel

Estoy usando este código para abrir un pdf con macros, sin embargo me funciona solo cuando tengo los documentos PDF en mi computador. Si paso dichos pdf a una carpeta de Red, modificando tambien la rut de la carpeta en el código, no me abre. Este es el código con los doc en el escritorio

Sub llamando_PDF()
ChDir "C:\user\full\Desktop\AF\"
nombre = Range("k3").Value
ruta = "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe "
Set fso = CreateObject("scripting.filesystemobject")
If fso.fileexists(CurDir() & "\" & nombre & ".pdf") Then
x = MsgBox("El archivo existe. ¿Desea abrirlo?", vbYesNo, "ATENCION")
If x = vbNo Then Exit Sub
Shell ruta & nombre & ".pdf"
Else
MsgBox "No existe PDF", , "ERROR"
End If
End Sub

supongamos que la carpeta de red está en Z:\af\ al modificarlo en el código me dice que no existe el documento.

Por favor, ¿alguien me puede indicar el fallo?

Respuesta
1

CURDIR... te indica el directorio activo (antes las carpetas se llamaban directorios)... pero NO HAY UNO SOLO... hay uno en cada disco... (ese es el estilo de D.O.S. y es el que usa VBA)

Si tu indicas CURDIR... te visualizará el directorio ACTIVO... DEL DISCO ACTIVO

Dicho esto, tu estas ejecutando_

ChDir "C:\user\full\Desktop\AF\"

y supongo que al hacer los cambios que mencionas... debes haber puesto algo como:

ChDir "Z:\AF\"

y eso ha cambiado el directorio activo del disco Z... pero probablemente tu DISCO ACTIVO siga siendo el C... y por lo tanto la instruccion...

If fso.fileexists(CurDir()   ......

sigue haciendo alusión al CURDIR del disco C...

debes indicarle que es el CURDIR... pero del disco Z, de la siguiente manera:

If fso.fileexists(CurDir("Z")   ......

o como alternativa... dejarlo como esta... pero antes hacer el cambio de disco con

ChDrive "Z"

Muchas Gracias Jaime, me resultó mejor usar el ChDrive ya que con el ChDir solo me validaba la consulta del MsgBox pero no me abría el archivo. Colocando el ChDrive, me funcionó tanto parta validar la consulta como para abrir el archivo.

1 respuesta más de otro experto

Respuesta
1

Intentalo sin pasar al directorio Z, de este modo:

Sub llamando_PDF()
'ChDir "C:\user\full\Desktop\AF\"
rutaArchi = "Z:\af\"
nombre = Range("k3").Value
ruta = "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe "
Set fso = CreateObject("scripting.filesystemobject")
If fso.fileexists(rutaArchi & nombre & ".pdf") Then
X = MsgBox("El archivo existe. ¿Desea abrirlo?", vbYesNo, "ATENCION")
If X = vbNo Then Exit Sub
Shell ruta & nombre & ".pdf"
Else
MsgBox "No existe PDF", , "ERROR"
End If
End Sub

Si esto resuelve tu consulta no olvides valorarla (opciones Excelente o buena)

Buenas noches Elsa, muchas gracias por tu respuesta. Ahorita no puedo hacer la prueba porque ya no estoy en la oficina. Sin embargo, anteriormente traté de hacer la macro (si mal no recuerdo) con una respuesta suya en otro Post. Y la respuesta iba así más o menos:

Sub llamando_PDF()
'en celda k3 coloqué el nombre del archivo que deseo abrir
archivo = Range("k3").Value
'la carpeta que contiene ese archivo
ruta = "C:\Users\AF\"
'la ruta del Adobe
llamada = Shell("C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe " & ruta & archivo & ".pdf", vbNormalFocus)
End Sub

Si la carpeta donde están los PDF, está en C, funciona perfectamente. Pero si yo tengo los PDF en una carpeta compartida en RED, no me funciona. Y ojo, estoy cambiando la ruta de la variable a por ejemplo: ruta = "z:\Users\AF\"

No se que me puede estar afectando.

muhas gracias

Vamos a esperar a que pruebes el último código que te envié. Luego me comentas.

Sdos!

Buenos días Elsa, como está?

Le comento, hice la modificación en el código como me lo sugirió, sin embargo sigue sin abrir, solo me funciona si la carpeta está en C. Hice la prueba incluso guardando la carpeta de los PDF en un pendrive y cambie la ruta a la que me indicaba el mismo y tampoco :-(.

Creo que el problema está en la ruta del Adobe, ya que no en todos los equipos está en la misma ruta.

Con este código funciona correctamente, pero previamente verifiqué la ruta entrando y ejecutando el exe del Adobe.

Sub llamando_PDF()
rutaArchi = "D:\AL_TRABAJO\"
nombre = Range("k3").Value
rutaAdobe = "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe "
Set fso = CreateObject("scripting.filesystemobject")
If fso.fileexists(rutaArchi & nombre & ".pdf") Then
    x = MsgBox("El archivo existe. ¿Desea abrirlo?", vbYesNo, "ATENCION")
    If x = vbNo Then Exit Sub
    llamada = Shell(rutaAdobe & " " & rutaArchi & nombre & ".pdf", vbNormalFocus)
Else
    MsgBox "No existe PDF", , "ERROR"
End If
End Sub

Revisa bien las barras y los espacios en la instrucción de 'llamada'.

Hola Elsa, muchas gracias por toda tu atención. Al final me resultó utilizando el ChDrive para activar el disco Z donde estaba la carpeta. De todas maneras estoy agradecido por toda su atención y disposición para ayudarme.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas