VBA Cambiar nombre de archivo (Cómo + 5 ejemplos de código)
VBA en Excel no nos restringe a una sola aplicación. VBA también nos da acceso al entorno de Windows. Con esto podremos realizar un montón de acciones comunes basadas en archivos. Uno de los más comunes es cambiar el nombre de un archivo. En esta publicación, veremos 5 ejemplos de cómo cambiar el nombre de archivos con VBA.
Tabla de contenido
- Cambiar el nombre de un archivo VBA
- Ejemplo 1: cambiar el nombre de un archivo
- Ejemplo 2: cambiar el nombre de un archivo según los valores de celda
- Ejemplo 3: mover un archivo con el comando Nombre
- Ejemplo 4: evitar errores al cambiar el nombre de archivos
- Ejemplo 5: función reutilizable
- Posibles errores
- Notas sobre cómo cambiar el nombre de archivos
Cambiar el nombre de un archivo VBA
Para cambiar el nombre de un archivo con VBA usamos el comando Nombre. El nombre aparece en azul porque es una palabra reservada dentro de VBA.
Ejemplo 1: cambiar el nombre de un archivo
Este ejemplo cambia el nombre de un archivo de Archivo de ejemplo.xlsx a Archivo de ejemplo renombrado.xlsx.
Sub VBARenameFile()Name "C:UsersmarksDocumentsExample File.xlsx" As _ "C:UsersmarksDocumentsExample File Renamed.xlsx"End Sub
Ejemplo 2: cambiar el nombre de un archivo según los valores de celda
En este ejemplo, cambiamos el nombre de un archivo según los valores de las celdas. La siguiente captura de pantalla muestra el nombre del archivo actual en la celda C2 y el nuevo nombre del archivo en la celda C4 .
Podemos ejecutar la siguiente macro para cambiar el nombre de un archivo usando estos valores de celda.
Sub VBARenameFileSheetNames()Name ActiveSheet.Range("C2") As _ ActiveSheet.Range("C4")End Sub
Ejemplo 3: mover un archivo con el comando Nombre
¿Notaste que el comando Nombre requiere la ruta y el nombre del archivo? Por lo tanto, el comando Nombre no sólo cambia el nombre de los archivos sino que también puede moverlos. Por ejemplo, el siguiente código mueve el archivo de C:UsersmarksDocuments a C:Usersmarks , pero el nombre del archivo sigue siendo el mismo.
Sub VBAMoveFile()Name "C:UsersmarksDocumentsExample File.xlsx" As _ "C:UsersmarksExample File.xlsx"End Sub
Ejemplo 4: evitar errores al cambiar el nombre de archivos
Intentar mover archivos que no existen o que están bloqueados para editarlos puede provocar errores. Los errores se detallan en la sección siguiente.
Si hay un error, realmente queremos evitar pasar por el proceso de depuración de errores de Visual Basic. En cambio, una mejor opción es mostrar un cuadro de mensaje con un botón Aceptar.
Sub VBAAdvancedRenameFile()'Create variables to hold file namesDim filePath As StringDim newFilePath As StringfilePath = "C:UsersmarksDocumentsExample File.xlsx"newFilePath = "C:UsersmarksDocumentsExample File Renamed.xlsx"'Ignore errorsOn Error Resume Next'Rename fileName filePath As newFilePath'Display message if error occuredIf Err.Number 0 Then MsgBox Prompt:="Unable to rename file", Buttons:=vbOK, _ Title:="Rename file error"End If'Turn error checking back onOn Error GoTo 0End Sub
Ejemplo 5: función reutilizable
Finalmente, creemos una función reutilizable para mover y cambiar el nombre de archivos.
La siguiente función de VBA acepta dos argumentos de cadena; la ruta del archivo existente y la nueva ruta del archivo.
Function fxRenameFile(filePath As String, newFilePath As String)'Ignore errorsOn Error Resume Next'Rename fileName filePath As newFilePath'Display message if error occuredIf Err.Number 0 Then fxRenameFile = FalseElse fxRenameFile = TrueEnd If'Turn error checking back onOn Error GoTo 0End Function
Podemos utilizar esta función de dos maneras.
- Llamar a la función desde otra macro
- Llamar a la función desde una hoja de trabajo
Veamos ambos por turno.
Llamar a la función desde una macro
La siguiente macro llama a la función y muestra un cuadro de mensaje con los siguientes valores:
- Verdadero = Archivo renombrado
- Falso = Se produjo un error.
Sub CallFunction()'Create variables to hold file namesDim filePath As StringDim newFilePath As StringfilePath = "C:UsersmarksDocumentsExample File.xlsx"newFilePath = "C:UsersmarksDocumentsExample File Renamed.xlsx"'True = File Renamed'False = Error OccuredMsgBox fxRenameFile(filePath, newFilePath)End Sub
Llamar a la función desde una hoja de trabajo
Alternativamente, podemos llamar a la función como una función de hoja de trabajo normal.
Mire la captura de pantalla anterior, nuestra función personalizada se usa en la celda C6 :
=fxRenameFile(C2,C4)
VERDADERO indica que el archivo nombrado en la Celda C2 ha sido renombrado exitosamente al archivo nombrado en la Celda C4 . Si ejecutamos la función por segunda vez, mostrará FALSO, ya que el archivo ya ha sido renombrado.
Tenga en cuenta que la función se ejecuta cada vez que cambian las celdas C2 o C4 , así que tenga cuidado con el orden en que actualiza las celdas.
CONSEJO PRINCIPAL: Si usamos la función fxRenameFile dentro de una función IF, solo se ejecutará cuando se cumpla la condición. En el siguiente ejemplo, la función fxRenameFile solo se ejecuta si la celda A6 es igual a Y.
=IF(A6="Y",fxRenameFile(C2,C4),"Do not rename")
Con este método, podemos controlar cuándo y cómo se ejecuta la función. Solo necesitamos cambiar la celda A6 a otro valor cuando no tenemos la función a ejecutar.
Posibles errores
Si intentamos cambiar el nombre de una ruta de archivo o carpeta que no existe, se genera un error: Error de tiempo de ejecución '53': Archivo no encontrado .
Si el nuevo nombre de archivo es el mismo que uno existente, se genera el siguiente error: Error de tiempo de ejecución '58': el archivo ya existe.
Si alguno de los nombres de archivo no tiene un formato válido, se genera el siguiente error: Error de tiempo de ejecución '5': llamada a procedimiento o argumento no válido
Notas sobre cómo cambiar el nombre de archivos
Hemos utilizado libros de Excel en los ejemplos, pero podemos utilizar cualquier tipo de archivo. Además, no estamos restringidos a archivos; También podemos cambiar el nombre de las carpetas usando el comando Nombre.
El comando Nombre es el código central de Visual Basic. Por lo tanto, existe en otras aplicaciones que soportan VBA, como Word y PowerPoint .
Artículos Relacionados:
- Código VBA para copiar, mover, eliminar y administrar archivos .
- biblioteca de códigos vba
- Copiar archivo VBA: cómo + 5 ejemplos
Deja una respuesta