VBA – Nombre de Libro (Get, Set, sin Extensión)
In this Article
Este tutorial demostrará como obtener y establecer el nombre del Libro de Trabajo en VBA.
Podemos obtener o establecer el nombre del libro activo en VBA, o un bucle a través de todos los libros abiertos en Excel, y obtener o establecer el nombre de cada uno de ellos utilizando un bucle VBA.
Obtener el Nombre del Libro
Para obtener el nombre del libro activo, necesitamos utilizar la propiedad name del objeto workbooks.
Sub GetWorkbookName()
Dim strWBName As String
strWBName = ActiveWorkbook.Name
MsgBox strWBName
End Sub
Si ejecutáramos el código anterior, veríamos aparecer en pantalla un cuadro de mensaje con el nombre del Libro de trabajo activo.
Para recorrer todos los libros activos, y devolver los nombres de los libros a Excel, podemos ejecutar el siguiente código:
Sub GetWorkbookNames()
Dim wb As Workbook
For Each wb In Workbooks
ActiveCell = wb.Name
ActiveCell.Offset(1, 0).Select
Next
End Sub
En los ejemplos anteriores se incluirá la extensión del fichero (por ejemplo xlsx). Si no desea incluir la extensión, hay algunos métodos que podemos utilizar para obtener sólo el nombre de archivo del libro de trabajo.
Obtener el Nombre del Libro de Trabajo Sin la Extensión
Podemos utilizar las funciones LEFT e INSTR para eliminar cualquier carácter después del punto en el nombre del archivo:
Sub GetWorkbookName()
Dim strWBName As String
strWBName = Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1)
MsgBox strWBName
End Sub
Podemos utilizar las funciones LEFT y LEN para eliminar 5 caracteres del final del nombre del archivo:
Sub GetWorkbookName()
Dim strWBName As String
strWBName = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5)
MsgBox strWBName
End Sub
Establecer el Nombre del Libro
Para establecer el nombre de un libro de trabajo en VBA, seguimos utilizando la propiedad Name del libro de trabajo, sin embargo no podemos utilizar este método para cambiar el nombre del Libro de trabajo activo. Esto se debe al hecho de que el libro de trabajo Activo está abierto, y se producirá un error de acceso al archivo. Para superar esto, podemos guardar el archivo con un nuevo nombre y luego eliminar el archivo antiguo.
Public Sub SetWorkbookName()
Dim strPath As String
Dim strNewName As String
Dim strOldName As String
strOldName = ActiveWorkbook.Name
strNewName = InputBox("Introduzca un nuevo nombre para el libro de trabajo")
strPath = ActiveWorkbook.Path
ActiveWorkbook.SaveAs strPath & "/" & strNewName
Kill strPath & "/" & strOldName
End Sub
Para renombrar un libro de trabajo que no está abierto, podemos utilizar el método Name.
Public Sub RenameWorkbook()
Name "C:\Data\MyFile.xlsx" As "C:\Data\MyNewFile.xlsx"
End Sub