Buscar y Abrir ARchivo PDF desde excel

18/08/2006 - 20:17 por J.P. | Informe spam
Bueno tengo una lista de documentos la clomna A de una hoja de excel
la cual contiene el nombre de los archivos que deseo abrir.

Seria facil si supiera su ubicación pues utilizaria un vinculo normal,
pero el problema es que yo quiero que al dar clic sobre la celda me
busque el archivo que contiene ese nombre y luego me lo abra.

Agradezco de antemano su colaboración.

Preguntas similare

Leer las respuestas

#1 Vinchenzo vinç
19/08/2006 - 17:31 | Informe spam
"J.P." <@> escribió en el mensaje news:
Bueno tengo una lista de documentos la clomna A de una hoja de excel
la cual contiene el nombre de los archivos que deseo abrir.

Seria facil si supiera su ubicación pues utilizaria un vinculo normal,
pero el problema es que yo quiero que al dar clic sobre la celda me
busque el archivo que contiene ese nombre y luego me lo abra.



Hola,
yo pregunto, ¿qué pasaría si existieran varios ficheros con el mismo nombre en diferentes carpetas?, ¿se debería abrir el primero que encuentre, o se deberían abrir todos?. Cualquiera de las dos opciones se podría considerar ineficiente.

Igualmente, buscar en toda la computadora un fichero, tanto puede llegar a ser "instantáneo", como demorarse hasta el aburrimiento.

¿Seguro que no puedes -de alguna forma- tener almacenada también la ruta (aunque sea relativa)?.


Saludos
( ! ) Respuestas precedentes en Google:
http://groups.google.com/group/micr...c.es.excel
( i ) Temperancia en el foro:
http://support.microsoft.com/defaul...newsreglas
Respuesta Responder a este mensaje
#2 J.P.
22/08/2006 - 22:10 | Informe spam
bueno limitemolo a una sola carpeta como le hago para llegar a ella.
Por ejemplo la carpeta "libros" que se encuetra en C.

Vinchenzo vinç wrote:
"J.P." <@> escribió en el mensaje news:
> Bueno tengo una lista de documentos la clomna A de una hoja de excel
> la cual contiene el nombre de los archivos que deseo abrir.
>
> Seria facil si supiera su ubicación pues utilizaria un vinculo normal,
> pero el problema es que yo quiero que al dar clic sobre la celda me
> busque el archivo que contiene ese nombre y luego me lo abra.

Hola,
yo pregunto, ¿qué pasaría si existieran varios ficheros con el mismo nombre en diferentes carpetas?, ¿se debería abrir el primero que encuentre, o se deberían abrir todos?. Cualquiera de las dos opciones se podría considerar ineficiente.

Igualmente, buscar en toda la computadora un fichero, tanto puede llegar a ser "instantáneo", como demorarse hasta el aburrimiento.

¿Seguro que no puedes -de alguna forma- tener almacenada también la ruta (aunque sea relativa)?.


Saludos
( ! ) Respuestas precedentes en Google:
http://groups.google.com/group/micr...c.es.excel
( i ) Temperancia en el foro:
http://support.microsoft.com/defaul...newsreglas
Respuesta Responder a este mensaje
#3 Vinchenzo vinç
23/08/2006 - 17:58 | Informe spam
"J.P." escribió:
bueno limitemolo a una sola carpeta como le hago para llegar a ella.
Por ejemplo la carpeta "libros" que se encuetra en C.




Hola,
entonces, mira a ver si te sirve usar el evento "Doble-click" en las celdas de las hojas, valiéndote del modelo de objectos del sistema de ficheros para buscar el archivo apuntado por la celda.

Los argumentos para la función 'BuscarFichero' son:
· «strPath»: Ruta en la que comenzar la búsqueda.
· «strFile»: El nombre del fichero buscado.
· «blnMúltiple»: Indicarás "True" si quieres que ejecute todos los que encuentre con ese nombre, que servirá si aplicas una búsqueda recursiva en sus subcarpetas.
· «blnRecursiva»: Indicarás "True", si quieres que la búsqueda también se extienda a las subcarpetas del directorio especificado en 'strPath'. Si 'blnMúltiple' es "False", detendrá la búsqueda en el primero que encuentre, en caso contrario se abrirán todos los ficheros de mismo nombre, ubicados bajo el árbol de directorios de la carpeta especificada.


Si usas el evento '_SheetBeforeDoubleClick' del objeto 'ThisWorkbook', podrás proveer de dicha funcionalidad a todas las hojas del libro, si sólo lo quieres para ciertas hojas, usa el evento '_BeforeDoubleClick' de la/s que te interese/n:
'***************
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Call EvaluarCelda(Target.Text, Cancel)
End Sub
'***************

Añades al libro un módulo estándar, y pones las siguientes funciones:
'=Public Sub EvaluarCelda(ByVal strText As String, ByRef Cancel As Boolean)
' Si se quiere, primero verificamos si el valor de la celda actual "puede corresponder" a un nombre de fichero _
típicamente "algún carácter seguido de un punto y una extensión de tres caracteres". Adáptalo como quieras.
If Not strText Like "*?.???" Then Exit Sub

' Bloqueas la entrada al estado de edición.
' Para editar este tipo celdas deberás usar "F2", o la barra de fórmulas.
Cancel = True

If BuscarFichero("C:\Libros", strText, False, True) = False Then
MsgBox "No se encontró el fichero ''" & strText & "''", vbInformation
End If
End Sub


Public Function BuscarFichero(ByVal strPath As String, ByVal strFile As String, _
ByVal blnMúltiple As Boolean, ByVal blnRecursiva As Boolean) As Boolean

Dim Fs As Object, oFile As Object
Dim oFolder As Object, oSubFolder As Object

Set Fs = CreateObject("Scripting.FileSystemObject")
For Each oFile In Fs.GetFolder(strPath).Files
If UCase$(oFile.Name) = UCase$(strFile) Then
ThisWorkbook.FollowHyperlink oFile.Path
BuscarFichero = True
'Si no se solicita apertura múltiple, finaliza la búsqueda.
If blnMúltiple = False Then Exit Function
'Si no, salimos del bucle para buscar (si se especificó) en sus subcarpetas.
Exit For
End If
Next

If blnRecursiva = True Then
'Buscamos en las subcarpetas:
For Each oSubFolder In Fs.GetFolder(strPath).SubFolders
BuscarFichero = BuscarFichero(oSubFolder.Path, strFile, blnMúltiple, blnRecursiva)
'Si se encontró el fichero y no se solicitó la ejecución múltiple, se termina la búsqueda.
If BuscarFichero = True And blnMúltiple = False Then Exit Function
Next
End If
End Function
'=


Saludos
( ! ) Respuestas precedentes en Google:
http://groups.google.com/group/micr...c.es.excel
( i ) Temperancia en el foro:
http://support.microsoft.com/defaul...newsreglas
Respuesta Responder a este mensaje
#4 J.P.
23/08/2006 - 20:14 | Informe spam
Gracias Vinchenzo, funciona a las mil maravillas, pero me surgio una
incognita como hago referencia a una unidad que no conozco, por decir
como me refiero a Mi PC.

Pues los archivos pueden estar en un CD y dependiendo del numero de
bandejas que se tengan el volumen de la unidad cambia.


Vinchenzo vinç wrote:
"J.P." escribió:
> bueno limitemolo a una sola carpeta como le hago para llegar a ella.
> Por ejemplo la carpeta "libros" que se encuetra en C.


Hola,
entonces, mira a ver si te sirve usar el evento "Doble-click" en las celdas de las hojas, valiéndote del modelo de objectos del sistema de ficheros para buscar el archivo apuntado por la celda.

Los argumentos para la función 'BuscarFichero' son:
· «strPath»: Ruta en la que comenzar la búsqueda.
· «strFile»: El nombre del fichero buscado.
· «blnMúltiple»: Indicarás "True" si quieres que ejecute todos los que encuentre con ese nombre, que servirá si aplicas una búsqueda recursiva en sus subcarpetas.
· «blnRecursiva»: Indicarás "True", si quieres que la búsqueda también se extienda a las subcarpetas del directorio especificado en 'strPath'. Si 'blnMúltiple' es "False", detendrá la búsqueda en el primero que encuentre, en caso contrario se abrirán todos los ficheros de mismo nombre, ubicados bajo el árbol de directorios de la carpeta especificada.


Si usas el evento '_SheetBeforeDoubleClick' del objeto 'ThisWorkbook', podrás proveer de dicha funcionalidad a todas las hojas del libro, si sólo lo quieres para ciertas hojas, usa el evento '_BeforeDoubleClick' de la/s que te interese/n:
'***************
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Call EvaluarCelda(Target.Text, Cancel)
End Sub
'***************

Añades al libro un módulo estándar, y pones las siguientes funciones:
'=> Public Sub EvaluarCelda(ByVal strText As String, ByRef Cancel As Boolean)
' Si se quiere, primero verificamos si el valor de la celda actual "puede corresponder" a un nombre de fichero _
típicamente "algún carácter seguido de un punto y una extensión de tres caracteres". Adáptalo como quieras.
If Not strText Like "*?.???" Then Exit Sub

' Bloqueas la entrada al estado de edición.
' Para editar este tipo celdas deberás usar "F2", o la barra de fórmulas.
Cancel = True

If BuscarFichero("C:\Libros", strText, False, True) = False Then
MsgBox "No se encontró el fichero ''" & strText & "''", vbInformation
End If
End Sub


Public Function BuscarFichero(ByVal strPath As String, ByVal strFile As String, _
ByVal blnMúltiple As Boolean, ByVal blnRecursiva As Boolean) As Boolean

Dim Fs As Object, oFile As Object
Dim oFolder As Object, oSubFolder As Object

Set Fs = CreateObject("Scripting.FileSystemObject")
For Each oFile In Fs.GetFolder(strPath).Files
If UCase$(oFile.Name) = UCase$(strFile) Then
ThisWorkbook.FollowHyperlink oFile.Path
BuscarFichero = True
'Si no se solicita apertura múltiple, finaliza la búsqueda.
If blnMúltiple = False Then Exit Function
'Si no, salimos del bucle para buscar (si se especificó) en sus subcarpetas.
Exit For
End If
Next

If blnRecursiva = True Then
'Buscamos en las subcarpetas:
For Each oSubFolder In Fs.GetFolder(strPath).SubFolders
BuscarFichero = BuscarFichero(oSubFolder.Path, strFile, blnMúltiple, blnRecursiva)
'Si se encontró el fichero y no se solicitó la ejecución múltiple, se termina la búsqueda.
If BuscarFichero = True And blnMúltiple = False Then Exit Function
Next
End If
End Function
'=>


Saludos
( ! ) Respuestas precedentes en Google:
http://groups.google.com/group/micr...c.es.excel
( i ) Temperancia en el foro:
http://support.microsoft.com/defaul...newsreglas
Respuesta Responder a este mensaje
#5 Vinchenzo vinç
23/08/2006 - 22:37 | Informe spam
"J.P." escribió:
Gracias Vinchenzo, funciona a las mil maravillas, pero me surgio una
incognita como hago referencia a una unidad que no conozco, por decir
como me refiero a Mi PC.

Pues los archivos pueden estar en un CD y dependiendo del numero de
bandejas que se tengan el volumen de la unidad cambia.



Hola,
en verdad no sé si entiendo correctamente lo que planteas.
A ver si lo he entendido, aparte del nombre del fichero, lo único que sabes con seguridad es que el fichero estará en una carpeta llamada "Libros" ubicada en la raíz de alguna unidad, que bien puede ser un disco duro, como un disquete, un CD/DVD, una memoria Flash, ..., en C, D, E, F, G, ..., ¿es así?.


Saludos
( ! ) Respuestas precedentes en Google:
http://groups.google.com/group/micr...blic.es.vb
( i ) Temperancia en el foro:
http://support.microsoft.com/defaul...newsreglas
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida