S17 · Macros básicas (grabación y edición VBA)¶
Datos de la sesión
Fecha: lunes 31-ago-2026 · Horario: 20:00 – 22:00 · Duración: 2 h · Sesión: 17 de 47 · Unidad: 2
¿Cuántas veces repites la misma secuencia de clics? Seleccionar, poner Título 1, cambiar el color, justificar, insertar la fecha… Una macro es una grabación de esos pasos que luego reproduces con un solo botón o atajo. No hace falta saber programar para empezar: se graba como quien graba un video, y después, si quieres afinarla, se edita el código (VBA en Word, Basic en LibreOffice). Lo vemos en Word y LibreOffice Writer; para Google Docs el equivalente es Apps Script (JavaScript), que solo mencionamos.
Una macro se guarda dentro del documento… y eso cambia la extensión
Un .docx no puede guardar macros. Al guardar un documento con macros, Word te obliga a usar
.docm (documento habilitado para macros) o una plantilla .dotm. En LibreOffice el .odt sí
admite macros. Si guardas un .docx con macros, se pierden.
Objetivos¶
- Entender qué es una macro y cuándo conviene usarla (tareas repetitivas).
- Grabar una macro en Word y en LibreOffice, y reproducirla.
- Asignarla a un botón o a un atajo de teclado.
- Abrir el editor de código y hacer una edición mínima de VBA/Basic.
- Guardar correctamente en
.docmy conocer la seguridad de macros.
Contenidos¶
1. ¿Qué es una macro y cuándo usarla?¶
Una macro automatiza una secuencia de pasos que repites igual. Buenos candidatos: aplicar un formato corporativo, insertar un encabezado estándar, limpiar texto pegado de internet, poner una tabla con estilo fijo.
Regla práctica
Si haces la misma secuencia más de tres veces, grábala. Si cambia según el caso (a veces sí, a veces no), entonces necesitas editar el código para añadir una condición — pero eso ya es el segundo paso.
2. Activar las herramientas de macros¶
| Quiero… | Word (español) | LibreOffice Writer |
|---|---|---|
| Ver la pestaña Programador | Archivo → Opciones → Personalizar cinta → marca Programador | Ya está en Herramientas → Macros |
| Grabar | Programador → Grabar macro (o Vista → Macros → Grabar macro) | Herramientas → Macros → Grabar macro |
| Editor de código | Programador → Visual Basic (Alt+F11) | Herramientas → Macros → Editar macros |
| Seguridad de macros | Programador → Seguridad de macros | Herramientas → Opciones → Seguridad → Seguridad de macros |
LibreOffice: activa la grabadora
En algunas instalaciones la grabadora está oculta: Herramientas → Opciones → LibreOffice → Avanzado → marca «Habilitar la grabación de macros (limitada)».
3. Grabar tu primera macro¶
El flujo es el mismo en Word y LibreOffice: enciendes la grabación, haces los pasos con cuidado, detienes.
- Pega texto copiado de internet (Wikipedia, un periódico, un PDF…) en un documento. Observa el desastre: fuentes mezcladas, tamaños distintos, hipervínculos azules subrayados, colores heredados, párrafos con espaciados raros. Al pegar, el texto queda seleccionado — esa selección es justo lo que la macro va a limpiar, sin tocar el resto del documento.
- Programador → Grabar macro. Ponle nombre (sin espacios:
LimpiarTextoWeb) y, en Word, decide dónde guardarla (ver aviso) y opcionalmente un botón/atajo. - Con el texto aún seleccionado, realiza exactamente los pasos de limpieza: Inicio → Borrar todo el formato → fuente Times New Roman 12 pt → color Automático (negro) → interlineado 1.5 → espaciado posterior 6 pt → alineación Justificar.
- Programador → Detener grabación.
- Prueba: busca otro artículo en internet, pégalo en el mismo documento (no en uno nuevo), ejecuta la macro y comprueba que solo el texto recién pegado queda limpio, sin alterar lo que ya estaba.
«Todos los documentos (Normal.dotm)» vs «este documento»
Al grabar en Word te pregunta dónde guardar la macro. Normal.dotm la deja disponible en todos tus
documentos (útil para ti, pero no viaja con el archivo). Este documento la guarda dentro y viaja con él,
pero te obliga a guardar en .docm. Elige según si la macro es «tuya» o «del documento».
La grabadora capta clics, no intenciones
Si durante la grabación haces clic con el ratón en un punto del texto, la macro grabará «ir a esa posición», no «ir al inicio del párrafo». Para macros robustas, muévete con el teclado (Inicio, Ctrl+Inicio, Mayús+Fin) en vez del ratón.
4. Ejecutar la macro y asignarla a un botón/atajo¶
| Quiero… | Word (español) | LibreOffice Writer |
|---|---|---|
| Ejecutar | Programador → Macros (Alt+F8) → elige → Ejecutar | Herramientas → Macros → Ejecutar macro |
| Botón en la barra de acceso rápido | Archivo → Opciones → Barra de herramientas de acceso rápido → Macros → añadir | Herramientas → Personalizar → Barras de herramientas |
| Atajo de teclado | Archivo → Opciones → Personalizar cinta → Personalizar (Métodos abreviados) → categoría Macros | Herramientas → Personalizar → Teclado |
5. Asomarse al código (VBA / Basic)¶
Abre el editor (Alt+F11 en Word). Verás algo así (lo que grabaste + lo que añadimos después):
Sub LimpiarTextoWeb()
' —— Grabado por la grabadora ——
' Actúa sobre la selección actual (el texto recién pegado)
Selection.ClearFormatting ' Borrar todo el formato
Selection.Font.Name = "Times New Roman"
Selection.Font.Size = 12
Selection.Font.Color = wdColorBlack
Selection.ParagraphFormat.SpaceAfter = 6
Selection.ParagraphFormat.LineSpacing = LinesToPoints(1.5)
Selection.ParagraphFormat.Alignment = wdAlignParagraphJustify
' —— Añadido a mano después de grabar ——
' Quitar dobles espacios (típico de texto pegado de web)
With Selection.Find
.Text = " "
.Replacement.Text = " "
.Execute Replace:=wdReplaceAll
End With
' Quitar subrayado de hipervínculos conservando el texto
Selection.Font.Underline = wdUnderlineNone
MsgBox "Texto limpiado. Listo para trabajar."
End Sub
Fíjate en qué está pasando aquí: la grabadora tradujo tus clics a VBA (la primera mitad), y tú añadiste
a mano la segunda mitad (quitar dobles espacios, quitar subrayado, aviso). El código actúa sobre
Selection — lo que tengas seleccionado al ejecutar —, no sobre todo el documento: así puedes pegar
contenido web en un informe existente y limpiar solo lo nuevo sin afectar al resto. No necesitas dominar
VBA hoy: basta con entender que la macro es ese texto y que puedes retocarlo sin empezar de cero.
Grabar para aprender a programar
El truco de los expertos: graban la acción para ver qué código genera y luego copian ese fragmento a sus propias macros o lo editan. La grabadora es tu mejor «traductor» de clics a VBA.
6. Seguridad de macros¶
Las macros pueden ser útiles… o maliciosas (un .docm de un correo desconocido puede traer código dañino). Por eso
Office las bloquea por defecto y muestra la barra «Habilitar contenido».
| Nivel | Qué hace |
|---|---|
| Deshabilitar todas con notificación (recomendado) | Bloquea, pero te deja decidir con un aviso |
| Deshabilitar todas sin notificación | Máxima seguridad; ni siquiera avisa |
| Habilitar todas (no recomendado) | Peligroso: ejecuta cualquier macro sin preguntar |
No habilites macros de documentos que no esperabas
La vía de entrada clásica de malware por Office es un .docm que pide «Habilitar contenido». Si no sabes qué hace
la macro o no esperabas el archivo, no la habilites.
Tips avanzados¶
- Nombra bien y sin espacios.
LimpiarTextoWebes mejor queMacro1; sabrás qué hace dentro de un mes. - Una macro = una tarea. Es más fácil mantener varias macros pequeñas que una gigante que hace de todo.
- Guarda tus macros «personales» en Normal.dotm para tenerlas siempre; guarda las «del documento» dentro del
.docm. - Prueba en una copia. Una macro que borra o reemplaza puede arruinar un documento; pruébala en un archivo de ejemplo.
Ctrl+Zno siempre deshace una macro entera. Algunas acciones de macro no se deshacen en un solo paso; trabaja sobre copias.- Google Docs → Apps Script. Si trabajas en la nube de Google, la automatización es con Extensiones → Apps Script (JavaScript), no VBA.
Otros procesadores¶
Trae un editor de macros (Herramientas → Macro) con un lenguaje tipo Basic (JS en versiones recientes). La grabadora es limitada; para tareas serias se escribe el código.
Automatiza con macros en JavaScript (Complementos → Macros), no con VBA. Útil si tu organización usa OnlyOffice en servidor.
Actividad en clase · «Limpiar texto web en un clic» (40 min)¶
Hazlo en Word o LibreOffice (la grabadora no existe en Google Docs; allí se escribe el script completo en Apps Script).
- Abre Wikipedia en el navegador, busca «Abancay» (o cualquier artículo que te interese), copia varios párrafos y pégalos en un documento.
- Pega el texto copiado en un documento (no importa si ya tiene contenido previo). Al pegar, el texto
queda seleccionado automáticamente. Activa la grabadora y graba la macro
LimpiarTextoWebhaciendo los pasos del apartado 3 sobre esa selección (borrar formato, Times New Roman 12, negro, interlineado 1.5, justificar). - Detén la grabación y pruébala: pega otro texto de internet en el mismo documento y ejecuta la macro. Verifica que solo limpia lo nuevo y no toca lo anterior.
- Abre el editor (Alt+F11), localiza tu macro y añade a mano:
- El bloque de buscar/reemplazar dobles espacios.
Selection.Font.Underline = wdUnderlineNonepara quitar el subrayado de enlaces.MsgBox "Texto limpiado. Listo para trabajar."al final.
- Asigna la macro a un botón de la barra de acceso rápido o a un atajo de teclado (Ctrl+Shift+L es buena elección), y úsalo sobre un tercer texto pegado de internet.
- Guarda el documento como
.docm(Word) u.odt(LibreOffice) y comprueba que la macro se conserva al reabrir. - Cierra y reabre: observa el aviso de seguridad de macros y practica «Habilitar contenido».
Atajos útiles¶
| Acción | Word (español) | LibreOffice |
|---|---|---|
| Editor Visual Basic | Alt+F11 | Herramientas → Macros → Editar |
| Lista de macros / Ejecutar | Alt+F8 | Herramientas → Macros → Ejecutar |
| Grabar macro | Programador → Grabar | Herramientas → Macros → Grabar |
| Detener grabación | Programador → Detener | Barra flotante Detener grabación |
Recursos (guías oficiales con capturas)¶
- Instalar (gratis): Descargar LibreOffice
- Grabar una macro · Programación con LibreOffice Basic
- No requiere instalación: docs.google.com
- Introducción a Apps Script (automatización con JavaScript, el equivalente a las macros)