.
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.
if (payload.eventType == ‘subscribe’) {
// Add code to handle subscribe event.
} else if (payload.eventType == ‘unsubscribe’) {
// Add code to handle unsubscribe event.
}
if (window.console) { // for debugging only
window.console.log(‘YT event: ‘, payload);
}
}
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:
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:
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.
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 & » » & spName 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
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
.
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