VBA en Excel; ¿Es posible abrir un explorador de archivos para obtener rutas y nombres de archivo?

Estoy haciendo un programita que me gestione un alto numero de copias selectivas de archivos.

Me faltaría poder abrir y usar un Explorador de Archivos de la siguiente manera;

1.- Abrir el explorador

2.- Seleccionar el o los archivos que quiero obtener Ruta y Nombre

3.- Dar a un boton del navedor (p.e. "obtener Ruta y Nombre") para que la información de Ruta y Nombre se me añadan a una lista que tengo en una hoja de excel... Pero que no se cierre el navegador para poder seguir seleccionando.

4.- Ir a otra carpeta o seleccionar otros archivos y hacer lo mismo que en 3.

Etc etc

5.- Cuando ya esté satisfecho, darle a otro botón del navegador para Cerrar la ventana y volver a la excel.

La idea es realizar esto con infinidad de carpetas y archivos, para que al final tenga una lista de los archivos que quiero copiar.

La copia ya la tengo implementada en una macro aparte.

Estaría muy agradecido por cualquier ayuda.

2 respuestas

Respuesta
4

Ejecuta la siguiente macro para seleccionar uno o varios archivos. Cuando ejecutas la macro te aparece la ventana del explorador de archivos, puedes seleccionar un archivo o varios archivos presionando la tecla Shift y el botón izquierdo del mous o la tecla control y el botón izquierdo del mouse sobre los archivos que necesitas. Presiona aceptar para que los nombres de los archivos con todo y carpeta se pasen a la columna "A".

Cambia en la macro col = "A" por la letra de la columna en donde quieres la lista de archivos.

Sub SeleccionaArchivos()
'Por.Dante Amor
    col = "A"
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Seleccione archivo de excel"
        .Filters.Clear
        .Filters.Add "All Files", "*.*"
        .Filters.Add "xls.*", "*.xls*"
        .FilterIndex = 2
        .AllowMultiSelect = True
        .InitialFileName = ThisWorkbook.Path
        If .Show Then
            For Each arch In .SelectedItems
                ufila = Range(col & Rows.Count).End(xlUp).Row + 1
                Cells(ufila, col) = arch
            Next
        End If
    End With
End Sub

Saludos.Dante Amor

Respuesta
2

Acá hay varios ejemplos que utilizan el navegador, el que más se ajusta es el que habilita multiselect

http://www.programarexcel.com/2014/06/explorador-windows-abre-libro-copia-y.html 

http://www.programarexcel.com/2014/04/explorador-de-archivos-multiselect.html 

http://www.programarexcel.com/2014/01/macro-abre-explorador-de-archivos-de.html 

http://www.programarexcel.com/2014/01/macro-abre-explorador-archivos-inserta.html 

Descarga el archivo con el ejemplo y mira su funcionamiento.

Acá hay más ejemplos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas