Cuando usas programacion de macros para mejorar tus libros de Excel, es normal que muchas de ellas se repitan de forma sistemática. Por ello es bueno disponer de una biblioteca de rutinas vba de la que poder copiar y pegar el código sin necesidad de reescribirlo cada vez.
Puedes organizarlo en un módulo de funciones dentro de un libro «biblioteca», guardarlas como módulos exportados en una carpeta para este propósito o, incluso, copiar el código en ficheros txt de donde lo puedas después recupera. Cualquiera de estos métodos te servirá.
Tener una buena organización de esta biblioteca, sin duda, te ahorrará muchas horas de trabajo.
Aquí te voy a dejar algunas de las que mas utilizo para que empieces a construir tu biblioteca poco a poco.
Cursor el modo reloj de arena
Comenzaremos por una sencilla instrucción. Si durnate un proceso que sabes va a llevar un tiempo, quieres cambiar el aspecto del cursor para que muestre el típico reloj de arena, de forma que el usuario sepa que la tiene que esperar a que la apicación termine de hacer algo, solo tienes que añadir la siguiente instrucción antes de lanzar el proceso.
Application.Cursor = xlWait
No te olvides, una vez el proceso finalice, de volver a mostrar el cursor en modo normal.
Application.Cursor = xlDefault
Ocultar barra de fórmulas
¿Quieres evitar que el usuario vea la fórmula de la celda donde se encuentra o simplemente ampliar un poco el área de visualización? Utiliza esta rutina.
Sub OcultarBarraFormulas
Application.DisplayFormulaBar = False
End Sub
Mostrar barra de fórmulas
Si has ocultado la barra de fórmulas, es recomendable que al salir o cuando el usuario cambie a otro libro que pueda tener abierto, se la muestres de nuevo.
Para un buen funcionamiento, deberías poner ambas rutinas, además en los eventos apropiados del libro: BeforeClose, Activate y Deactivate.
Sub OcultarBarraFormulas
Application.DisplayFormulaBar = True
End Sub
Ocultar nombres de pestañas
Con esta línea de código ocultarás los nombres de las pestañas. De nuevo ganarás algo de espacio para la visualización de los datos, además de evitar que el usuario vea las pestañas que hay.
Sub OcultarPestanas
ActiveWindow.DisplayWorkbookTabs = False
End Sub
Mostrar nombres de pestañas
Al igual que en la rutina de la barra de fórmulas, deberías gestionar cuando mostrar de nuevo las pestañas para que la experiencia del usuario no sea frustrante para él. Imagina que tiene otro libro abierto y que al cambiar a dicho libro, no ve sus pestañas. Seguro que no estará muy contento con tu aplicación.
Sub OcultarPestanas
ActiveWindow.DisplayWorkbookTabs = True
End Sub
Gestiónala con los eventos adecuados para evitar el problema descrito.
Acceder a datos de Access y copiar en la hoja activa
Si quieres acceder a datos alojados en una base de datos de Access y copiarlos a tu hoja Excel, este código te solucionará el problema. Lógicamente, deberás ajustarla a tus necesidades:
- Ruta a la base de datos
- Sentencia SQL que necesitas
- Hoja y posición en que quieres copiar tus datos
Ten en cuenta que esta rutina necesita que crees la referencia a la librería Microsoft ActiveX Data Objects X.X Library.

Sub LeerTabla()
Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim SQL As String
Dim RutaBD As String
'Escribe la ruta que necesites
RutaBD = "RutaCompleta_A_BaseDeDatos"
Set conn = New ADODB.Connection
With conn
.Provider = "Microsoft.Jet.OLEDB.4.0;"
.ConnectionString = "Data Source=" & RutaBD
.Open
End With
'Por tu consulta SQL
SQL = "Select * from TABLA"
Set rst = New ADODB.Recordset
rst.Open SQL, conn
'Define donde quieres copiar los datos
ActiveSheet.Cells(1, 1).CopyFromRecordset rst
Set rst = Nothing
Set conn = Nothing
End Sub
Enviar fichero por email
Esta rutina te permitirá hacer un envío de un fichero por email con Outlook. Si la combinas con una rutina de llamada que vaya transfiriendo parámetros, podrás hacer un mailing de forma totalmente automática.

Sub EnviarFichero(strAdjunto As String, strA As String, strAsunto As String)
Dim strEmail As String
Dim strMsg As String
Dim oLook As Object
Dim oMail As Object
On Error GoTo ManejadorErrores
Set oLook = CreateObject("Outlook.Application")
Set oMail = oLook.createitem(0)
With oMail
.To = strA
.Subject = strAsunto
If strAdjunto <> "" Then
.Attachments.Add (strAdjunto)
End If
.send
End With
Set oMail = Nothing
Set oLook = Nothing
FinRutina:
DoCmd.Hourglass False
Exit Sub
ManejadorErrores:
DoCmd.Hourglass False
Call InformarError("Frm12_Mailing", "EnviarFichero", Err.Number, Err.Description)
'fSetAccessWindow (SW_SHOWMINIMIZED)
Resume FinRutina
End Sub
Mostrar todas las hojas del libro
Con este código mostrarás todas las hojas del libro que estén ocultas.
Sub MostrarTodasLasHojas()
Dim Hoja As Worksheet
For Each Hoja In ActiveWorkbook.Worksheets
Hoja.Visible = xlSheetVisible
Next Hoja
End Sub
Ocultar todas las hojas de libro
Este código te servirá para ocultar todas las hojas de libro, a excepción de la activa. En muchas ocasiones, establecerás tu hoja como menú desde el que lanzar los diferentes procesos que hayas programado y te interesará que el usuario solo tenga acceso a este menú principal desde el que se gestionará que hojas deben estar visibles en cada momento.
Lo mas práctico es que sea llamada al abrir el libro, con el evento Workbook_Open.
Sub OcultarTodasLasHojas()
Dim Hoja As Worksheet
For Each Hoja In ThisWorkbook.Worksheets
If Hoja.Name <> ActiveSheet.Name Then wsHoja Visible = xlSheetHidden
Next Hoja
End Sub
Conclusión
Con las rutinas de este artículo podrás empezar a crear tu biblioteca de rutinas vba. Con el tiempo, podrás ir incrementando esta biblioteca con todas aquellas líneas de código que, en tu práctica habitual, veas que usas con frecuencia. Verás que es una muy buena práctica que te ahorra mucho tiempo y te evita tener que buscar en que proyecto utilizaste un código similar que puedas reutilizar.
En este enlace puedes consultar infinidad de rutinas: VBA code example.
Si además quieres aprender algo sobre buenas prácticas programando en vba, puedes consultar el artículo relacionado en este enlace.
Si tienes alguna rutina que utilices frecuentemente y la quieras compartir, puedes dejarla en los comentarios.