Automatiza la copia de seguridad de tu libro de Excel almacenado en SharePoint Online con una única macro VBA que crea un “backup” en la subcarpeta Copies sin interrumpir tu sesión de trabajo y, acto seguido, actualiza el archivo original.
Por qué necesitas una macro de backup en SharePoint Online
SharePoint Online incluye control de versiones, pero no siempre es suficiente. En escenarios donde:
- Hay macros que modifican datos sensibles.
- Participan varios usuarios editando simultáneamente.
- Se requiere aislar un “snapshot” funcional de la versión master a petición del auditor.
… resulta práctico guardar una copia física adicional en la misma biblioteca para restaurarla rápidamente o descargarla sin depender de la interfaz web.
Diferencias clave entre rutas URL y rutas del cliente de sincronización
Al abrir un libro directamente desde SharePoint, ThisWorkbook.Path
devuelve una URL segura (HTTPS), por ejemplo:
https://contoso.sharepoint.com/sites/Finanzas/ReporteMensual
En cambio, si trabajas con el cliente de sincronización de OneDrive, Windows expone una ruta local tipo:
C:\Users\Ana\OneDrive - Contoso\Finanzas\ReporteMensual
La macro propuesta usa la URL; así evita:
- Errores cuando OneDrive aún no ha descargado el archivo.
- Rutas demasiado largas (> 260 caracteres) en equipos con versiones antiguas de Windows.
Si prefieres la ruta local, basta con sustituir ThisWorkbook.Path
por la variable del sistema Environ("OneDrive")
+ carpeta relativa, pero perderás inmediatez al depender de la sincronización.
Estructura mínima de carpetas
Para que el script funcione sin errores, tu biblioteca debe contener:
Carpeta | Propósito |
---|---|
(raíz de la biblioteca) | Libro principal en producción |
Copies | Copias de seguridad generadas por la macro |
Crea Copies desde el portal o con Nuevo → Carpeta. El nombre distingue mayúsculas y minúsculas en la URL, así que usa exactamente “Copies”.
Cómo trabajan SaveCopyAs
y SaveAs
SaveCopyAs
genera un duplicado cerrado—no lo abre ni cambia el identificador interno de la sesión. Es ideal para backups porque libera inmediatamente el bloqueo del archivo sin forzar a los demás usuarios a recargar.SaveAs
guarda el archivo activo y lo deja abierto. Cuando se especifica el mismo nombre y ruta originales, simplemente sobre‑escribe la versión existente, manteniendo el control de versiones de SharePoint.
Macro VBA completa y comentada
'------------------------------------------------------------
' Nombre : MakeBackup
' Autor : Equipo de IT – Contoso
' Objetivo: 1) Copiar el libro en /Copies
' 2) Re‑guardar la versión activa
' Uso : Llamar al final de una macro principal o asignar
' a un botón en la cinta de opciones.
'------------------------------------------------------------
Sub MakeBackup()```
Dim homePath As String 'Ruta del archivo principal
Dim backupPath As String 'Ruta del backup
'1. Construir las rutas basadas en la URL de SharePoint
homePath = ThisWorkbook.Path & "/BOB_Finalv5a.xlsm"
backupPath = ThisWorkbook.Path & "/Copies/BOB_Finalv5a_backup_" & _
Format(Now, "yyyymmdd_hhmmss") & ".xlsm"
On Error GoTo ErrorHandler
'2. Crear la copia sin interrumpir la sesión
ThisWorkbook.SaveCopyAs Filename:=backupPath
'3. Re‑guardar la versión de trabajo
ActiveWorkbook.SaveAs Filename:=homePath, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled
MsgBox "Backup creado correctamente en:" & vbCrLf & backupPath, _
vbInformation, "Proceso completado"
Exit Sub
```
ErrorHandler:
'Evitar mensajes falsos de Error 0
If Err.Number <> 0 Then
MsgBox "Error " & Err.Number & ": " & Err.Description, \_
vbCritical, "Guardar archivo"
End If
End Sub
Explicación de cada bloque
- Rutas absolutas con timestamp
Se añade la fecha y hora al nombre del backup (año‑mes‑día_hora‑min‑seg) para impedir sobrescribir copias anteriores y facilitar la auditoría. - Manejo de errores centralizado
El bloqueOn Error GoTo ErrorHandler
captura cualquier fallo y muestra la descripción exacta. El filtroIf Err.Number <> 0
evita ventanas emergentes vacías. - Mensaje de confirmación
UnMsgBox
final confirma la operación y muestra la ruta resultante al usuario—útil cuando la macro corre de forma invisible en segundo plano.
Cómo probar la macro paso a paso
- Haz una copia local del libro para evitar sobrescribir la versión de producción durante las pruebas.
- Abre el Editor de VBA (Alt + F11) y pega el procedimiento en un módulo estándar.
- Ejecuta MakeBackup con F5. Comprueba que:
- Se crea un nuevo archivo en /Copies con sello de tiempo.
- El archivo original incrementa su control de versiones en SharePoint.
- Revisa la pestaña “Historial de versiones” desde el portal web y verifica la entrada correspondiente.
Solución al error “La carpeta no se encuentra” y Error 0
El mensaje suele aparecer cuando:
- El nombre de carpeta en la URL no coincide exactamente con el real (respeta mayúsculas).
- El usuario trabaja con OneDrive y la ruta local aún no está sincronizada.
- El nombre excede los 218 caracteres permitidos por SharePoint para la ruta relativa.
Para resolverlo:
- Confirma que Copies existe y posee permisos de escritura.
- Si usas la ruta local, espera a que el icono de sincronización muestre “Sincronizado”.
- Prueba a usar la URL (método recomendado) para descartar problemas del cliente de escritorio.
Mejoras opcionales
- Guardar en una biblioteca externa Modifica
backupPath
para apuntar a otro sitio de SharePoint destinado a archivado histórico. Asegúrate de tener permisos de escritura y de habilitar versiones mayores en ese sitio. - Encriptación ligera Para ficheros que contengan datos personales, agrega una contraseña de apertura usando la propiedad
Password:=
enSaveAs
. - Llamadas REST con Microsoft Graph En entornos sin macros se puede emplear PowerShell o C# para subir el archivo vía API. Permite procesos automáticos en servidores donde Office no esté instalado.
- Registro de eventos Integra llamadas a
Debug.Print
o escribe en un fichero.log
para rastrear la actividad cuando la macro se ejecute desde procedimientos por lotes.
Preguntas frecuentes
¿Puedo ejecutar la macro desde Power Automate? Sí. Publica la macro como un comando personalizado o activa la ejecución de Excel en segundo plano con Power Automate Desktop. ¿Qué pasa si otro usuario tiene abierto el archivo? SaveCopyAs
ignora los bloqueos y crea la copia sin problemas. SaveAs
puede causar un aviso si el usuario ha abierto una versión en caché. Recomienda a los colaboradores cerrar o actualizar antes de lanzar la macro. ¿Es compatible con Excel para Mac? Sólo desde Excel 365 para Mac v16.77 o superior, donde se habilitó el soporte de URLs HTTPS en VBA. En versiones anteriores deberás usar la ruta local sincronizada.
Conclusión
Con unas pocas líneas de VBA puedes robustecer tu flujo de trabajo en SharePoint Online: la macro MakeBackup salvaguarda datos críticos sin sacrificar productividad ni depender de complementos externos. Implementa la estructura recomendada de carpetas, prueba en un entorno seguro y extiende el script según tus políticas de TI para disfrutar de un control de versiones doble—el nativo de SharePoint y tu propio histórico de copias físicas.