Macro en excel que liste archivos

Hola. Estoy intentando crear una macro en un libro de excel con la que consiga listar los archivos que se encuentran precisamente en la ubicación de este libro. Esta ubicación varía según el usuario que vaya a utilizar el excel. He escrito lo siguiente y no me funciona.
    Sub ListaArchivos()
             Dim myRow As Integer
             Dim MyFile As String
             Dim MiRuta As String
       Lo siguiente borra la zona del libro donde se listarán los archivos y se activa la celda C7
             Range("C7:C21").Select
             Selection.ClearContents
             Range("C7").Select
             Cells.Clear
       Establezco el valor 7 para iniciar el listado en esa ubicación, le doy el valor actual de la ubicación del libro a la ruta que debe seguir (no sé si aquí me estoy equivocando) y establezco el valor de MyFile según esa ruta.
             myRow = 7
             MiRuta = ThisWorkbook.Path
             MyFile = Dir("MiRuta\*.*")
             Do Until MyFile = ""
             Cells(myRow, 3) = MyFile
             myRow = myRow + 1
             MyFile = Dir
             Loop
     End Sub
Más adelante, convierto este listado en hipervínculos para que el usuario pueda acceder a ellos y los utilizo para actualizar la información de los archivos listados en el libro de excel que estoy creando.
Si puedes responderme, me ayudarás a ganar tiempo. De todas formas, sigo intentándolo.
Un saludo

1 Respuesta

Respuesta
1
A ver no consigo entenderte, que pretendes repasar un directorio conocido (la carpeta donde van guardando los archivos los usuarios) para conocer todos los archivos que existen en ese directorio y crear hipervínculos para abrirlos desde el libro donde se escriben los hipervínculos.
Si es así me lo confirmas y si no me aclaras mejor que pueda entenderte.
Si quieres hacer eso no te molestes más tengo las macros para hacerlo son muy sencillas.
>Un saludo
>Julio
Hola Julio.
Intento aclararme.
El libro que estoy creando tiene que recoger información de otros libros que se van a guardar en determinadas carpetas según el usuario que deba utilizarlo.
Se trata de una aplicación que ayuda a los jefes de equipos a tener informes sobre la evolución de algunos de sus colaboradores (los recién integrados en el equipo). Cada colaborador tiene un excel específico que ya está creado y funcionando. Ahora estoy creando el excel del jefe que debe facilitarle tanto el saber cuántos colaboradores tiene en situación de formación (pueden variar), acceder a sus excel individuales y tener automáticamente un informe de situación global de todos ellos.
Tengo todo hecho a falta de esas macros que hagan que el libro de excel del jefe explore los archivos que hay en la carpeta (sólo habrá extensiones xls ya que trabajan con el 2003), que lo liste y que asocie hipervínculos automáticamente.
Como son muchos los jefes y diferentes las ubicaciones de las carpetas de cada uno de ellos, necesito que la macro busque archivos en la misma ubicación en la que esté el excel del jefe.
Todo lo de la actualización de informes, etc., ya lo tengo resuelto.
Un abrazo y gracias.
La macro es esta tan solo tendrás que cambiar la ruta de la carpeta a explorar:
Sub HyperlinkChange()
Do While ActiveCell <> ""
ActiveCell.Offset(0, 1).Select
NombreLibro = ActiveCell.Offset(0, -1).Value
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
"C:\Documents and Settings\Usuario\Escritorio\Macros\" + NombreLibro, TextToDisplay:= _"Abrir"
ActiveCell.Offset(1, -1).Select
Loop
End Sub
Esta macro te crea en tu libro de excel una relación de la carpeta que pusiste en la ruta y te abre todo tipo de archivos, te genera hipervínculos a ellos y la aplicación correspondiente a su extensión (asignada en windows para abrirla) la abrirá.
>Un saludo
>Julio
Julio, gracias por tus consejos.
La única duda que me queda es que la carpeta a explorar varía según cada usuario, es decir, no hay una ruta predefinida, será siempre la carpeta en la que esté el libro. ¿Cómo puedo hacer que la macro busque en la carpeta actual donde esté el libro? ¿Con ThisWorkBook.Path o algo así? ¿Cómo lo hago en la macro?
Un abrazo y disculpa mi desconocimiento de estas cosas.
Jaime
Aquí de dejo una macro para que puedas utilizarla si quieres abrir las hojas la dejas y sino quitas el código que no te interese:
Option Explicit
Sub recorrer_libros()
Dim ruta_directorio As String 'Almacena la ruta del directorio dónde esta ejecutandose la macro
Dim archivo As String 'Nombre del arhivo en que se va recorriendo con la macro
Dim Abrir_Archivo As String 'Ruta y nombre del libro que se va Abrir
Dim Archivo_Actual As Workbook 'Asignacion del libro Abierto
Dim Hoja As Worksheet 'Asignacion de la Hoja del libro abierto
Dim SumaTotal As Double 'sumatoria de valores
ruta_directorio = ThisWorkbook.Path
archivo = Dir(ruta_directorio & "\" & "*.xls")
'para recorrer el directorio archivos excel 97-2003
Do While archivo <> "" 'Bucle para recorrer los directorios
If archivo <> ActiveWorkbook.Name Then 'Para evitar que tambien tome en cuenta nuestro libro que tiene la macro
Abrir_Archivo = ruta_directorio & "\" & archivo
Set Archivo_Actual = Workbooks.Open(Abrir_Archivo, 3) 'Abrimos el libro
For Each Hoja In Archivo_Actual.Worksheets 'Bucle para recorrer cada hoja del libro
'aqui pondrias tu accion deseada con cada hoja
MsgBox "El valor en " & Archivo_Actual.Name & " " & Hoja.Name & _
" en el rango A1 es " & Hoja.Range("A1").Value, vbInformation
If IsNumeric(Hoja.Range("A1")) = True Then _
SumaTotal = SumaTotal + Hoja.Range("A1").Value
Next Hoja 'Siguiente Hoja
Archivo_Actual.Close 'Cerramos el libro
End If
archivo = Dir 'Obtiene siguiente entrada del directorio
Loop
MsgBox "La suma total es: " & SumaTotal
End Sub
Si te ha servido finalizas y puntúas (si quieres la consulta).
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas