Hoy os vamos a enseñar a diseñar una Macro de Excel VBA, con la que podremos guardar cada pestaña del libro en que estemos trabajando, como un libro independiente en una ruta de nuestra elección o programable con Año, Mes, Día, Nombre de pestaña…
Así que vamos a empezar:
Creación del fichero
Lo primero es crear nuestro fichero Excel, para ello seguiremos los siguientes pasos:
-
- Como vamos a insertar macros en él fichero, tenemos que guardarlo como Libro de Excel habilitado para macros (*.xlsm).

- Ahora crearemos una serie de pestañas con distintos nombres en el fichero, para así poder hacer pruebas con cada una de las pestañas.
- Pestaña Macros. En esta pestaña encontraremos los controles de formulario que nos permitirán personalizar la ruta dónde guardaremos el ficheroTras insertar unos cuantos controles de formulario, fórmulas y formato, la hoja debería quedar como sigue:
Excel: Macro VBA para guardar pestañas en ficheros independientes. Macros - Pestaña Tareas. Insertamos una serie de datos aleatorios.
Excel: Macro VBA para guardar pestañas en ficheros independientes. Tareas - Pestaña Colores. En esta pestaña hemos diseñado una fórmula que nos indique el color RGB que posee la celda de la primera columna de cada fila.
Excel: Macro VBA para guardar pestañas en ficheros independientes. Colores - Pestaña ASCII. A través de la fórmula
=CARACTER(número)
obtenemos todos los símbolos ASCII que posee el sistema.Excel: Macro VBA para guardar pestañas en ficheros independientes. ASCII
- Pestaña Macros. En esta pestaña encontraremos los controles de formulario que nos permitirán personalizar la ruta dónde guardaremos el ficheroTras insertar unos cuantos controles de formulario, fórmulas y formato, la hoja debería quedar como sigue:
Programación de las Macros
Ahora pasamos a explicar las macros utilizadas:
- Macro Pestaña Macros. En esta pestaña hemos creado una macro que se ejecute automáticamente cada vez que la pestaña es seleccionada. El código que se ejecuta lee los nombres de cada pestaña que posee el libro y los usa como condición de validación de la celda H27, así tenemos una lista desplegable con dichos nombres. El código utilizado es:
Private Sub Worksheet_Activate()
Dim hoja As Worksheet
Dim cad As String
Dim hojas() As String
Dim i As Integer
For i = 0 To ActiveWorkbook.Sheets.Count - 1
ReDim Preserve hojas(i) As String
hojas(i) = Sheets(i + 1).Name
Next i
Range("H27").Validation.Delete
Range("H27").Validation.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, Operator:= xlBetween, _
Formula1:=Join(hojas, ",")
End Sub
- Macro colorFondo. A través de una función personalizada, obtenemos el color del interior de la celda (fondo). La fórmula está programada para que devuelva el color en formato RGB (R,G,B) o por colores individuales (R, G o B)
Function colorFondo(Celda As Range, Optional Color As String)
Dim Col, Red, Green, Blue As Integer
Col = Celda.Interior.Color
Red = Col Mod 256
Green = Col \ 256 Mod 256
Blue = Col \ 65536 Mod 256
Select Case Color
Case "R"
colorFondo = Red
Case "G"
colorFondo = Green
Case "B"
colorFondo = Blue
Case Else
colorFondo = "(" & Red & "," & Green & "," & Blue & ")"
End Select
End Function
- Macro saveSheet(). Y aquí la macro objetivo, a través de esta macro conseguiremos guardar nuestras pestañas en la ruta personalizada que elijamos. La macro divide la ruta en subdirectorios y va comprobando uno a uno si existe, en caso contrario lo crea y pasa al siguiente nivel, para finalmente guardar la pestaña en un archivo independiente.
Sub saveSheet()
Dim sh, Path, vPath, cad As String
sh = Sheets(1).Range("H27").Value
If sh = "" Then
MsgBox "Debe elegir una pestaña en el rango " & _
Chr(34) & "H27" & Chr(34), vbCritical, "Error"
Exit Sub
End If
Path = Range("C31")
vPath = Split(Path, "\")
For Each element In vPath
cad = cad & element & "\"
If Dir(cad, vbDirectory) = "" Then
MkDir cad
End If
Next element
Sheets(sh).Copy
ActiveWorkbook.SaveAs Filename:=Path & sh & ".xlsx", _
FileFormat:=xlWorkbookDefault
End Sub
Si te interesan nuestros tutoriales y te gustaría profundizar en Excel, ofrecemos cursos a compañías que pueden bonificarse a través de Fundae (Fundación Tripartita). Consigue más información y contacto en www.sin3w.com