PROGRAMAR EN VBA MACROS PARA EXCEL: Como seleccionar directorio con Explorador buscar archivos y renombrarlo cambiando nombre

Como seleccionar directorio con Explorador buscar archivos y renombrarlo cambiando nombre





Macro que permite seleccionar directorio con Explorador de Archivos de Windows busca archivos y renombra ficheros, anteriormente se presentó una variante que directamente se establecía la ruta del directorio en la macro en este caso se da la opción al operador  de seleccionar el archivo, esto es más adecuado cuando el directorio donde se encuentran los archivos a buscar y modificar no es siempre constante, dando la versatilidad para poder seleccionar el directorio cada vez que se ejecuta la macro.

Recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

El vídeo verás la macro en acción con una explicación más detallada de su codificación y funcionamiento, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo Recorre fila buscando y comparando datos de dos columnas en hojas distintasbuscar en listbox mientras escribes en textbox, como crear una factura o sale invoice y grabar guardar PDF XLS y enviar por mailconectar Excel con Access y muchos ejemplos más.








  

Por favor considera la posibiliad de aportar para sostener el sitio, desde el link del final del post se puede descargar el ejemplo de macro, cada usuario puede adaptarlo a sus necesidades, la codificación está abierta y es de libre, se brinda en forma gratuita.

El fichero que se descarga en un archivo comprimido ZIP, que contiene la macro y una carpeta con archivos que utiliza el ejemplo denominado como seleccionar directorio con explorador de archivos buscar fichero y renombrar cambiando solo una parte de su nombre; la condición es descomprimir en cualquier directorio.

Al presionar el botón para ejecutar la macro, se muestra un explorador de archivos que permite seleccionar la carpeta o directorio donde están los archivos cuyo nombre se modificarán, la macro realiza un bucle recorriendo todos los archivos del directorio, modificando su nombre.

La macro no modifica totalmente el nombre solo una parte, básicamente la macro determina donde está el número que se encuentra en el nombre de la macro, que a su vez es el código con el que se identifica en el archivo de Excel, detectado el número lo extrae, extrae la cadena de texto anterior al número y la posterior, para luego concatenar, estableciendo el nombre del archivo teniendo presente que el número va primero luego la primer parte de la cadena de texto y por último la ultima parte de la cadena de texto que formaba el nombre del archivo, para comprender en forma fácil lo que se está explicando, sugiero ver el vídeo tutorial también.

Para realizar lo mencionado se utilizan los siguientes códigos, el primero establece en la variable path1 la dirección o ruta de la carpeta seleccionada

path1 = CreateObject("shell.application").browseforfolder(0, "Seleccione Carpeta", 0).Items.Item.Path

Con estos códigos se forma el nombre del archivo, ver vídeo tutorial explica en detalle:

    b = ficheros.Name
    nomold = path1 & "\" & b
    esp1 = InStr(b, " ")
    esp2 = InStr(esp1 + 1, b, " ")
    num = Mid(b, esp1 + 1, esp2 - 1 - esp1)
    pp = Left(b, esp1 - 1)
    sp = Mid(b, esp2 + 1)
    nomnew = path1 & "\" & num & " " & pp & " " & sp

Para renombrar el archivo se apela al siguiente código: Name nomold As nomnew


⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛
Quizá sea de utilidad también

Crear una colección de datos y buscar uno por uno

Guardar un archivo Excel con una fecha como nombre

Mostrar en el mismo listbox, suma, cuenta y promedio

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛



⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛

Luego de renombrar el archivo, la macro busca en la columna A del fichero Excel el número con el que comienza el fichero, que a su ves es el código que hace referencia al archivo correspondiente, encontrado el archivo se coloca en la columna F la dirección o ruta al archivo y en la columna A se crea un hiperlink, hipervinculo o link al archivo, una vez hecho esto haciendo click en el código de la columna A se abre el archivo correspondiente.

Para crear el link al archivo se utiliza el siguiente código:

texhipv = a.Range("A" & codigo.Row)
dire = codigo.Row

La variable texhipv guarda el texto que se verá en el link, dire contiene la fila donde está el registro que coincide con el archivo y luego se hace el link al archivo, con el código que sigue, si se observa se ve como se utilizan las variables para formar el link al archivo; a continuación se muestra el código completo.

a.Hyperlinks.Add Anchor:=a.Range("A" & dire), Address:=nomnew, TextToDisplay:=texhipv
NunFich = NunFich + 1


Código que se inserta en un módulo


Sub hiperlinkficheroYURL()
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim path1 As String, ruta As String, texhipv As String
Set a = Sheets(ActiveSheet.Name)
uf = a.Range("A" & Rows.Count).End(xlUp).Row
'path1 = ActiveWorkbook.Path & "\324 PruebaHyper"
path1 = CreateObject("shell.application").browseforfolder(0, "Seleccione Carpeta", 0).Items.Item.Path
 If path1 = "" Then
 MsgBox "No ha seleccionado directorio carpeta Excel, seleccione directorio .", , "AVISO"
 Exit Sub
 End If
Set fso = CreateObject("Scripting.FileSystemObject")
Set carpeta = fso.getfolder(path1)
Set ficheros = carpeta.Files
NunFich = 0
num = 0
For Each ficheros In ficheros
    b = ficheros.Name
    nomold = path1 & "\" & b
    esp1 = InStr(b, " ")
    esp2 = InStr(esp1 + 1, b, " ")
    num = Mid(b, esp1 + 1, esp2 - 1 - esp1)
    pp = Left(b, esp1 - 1)
    sp = Mid(b, esp2 + 1)
    nomnew = path1 & "\" & num & " " & pp & " " & sp

Name nomold As nomnew

busco = num
Set codigo = a.Range("A5:A" & uf).Find(busco, LookIn:=xlValues, LookAt:=xlWhole)
If Not codigo Is Nothing Then
a.Range("F" & codigo.Row) = nomnew
texhipv = a.Range("A" & codigo.Row)
dire = codigo.Row
a.Hyperlinks.Add Anchor:=a.Range("A" & dire), Address:=nomnew, TextToDisplay:=texhipv
NunFich = NunFich + 1

End If
Next ficheros

Set carpeta = Nothing
Set ficheros = Nothing
MsgBox ("Se encontraron " & NunFich & " ficheros en la carpteta seleccionada"), vbInformation, "AVISO"
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub


Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends