ACTUALIZA listas de SHAREPOINT desde EXCEL

ACTUALIZA listas de SHAREPOINT desde EXCEL

¿Quieres aprender a actualizar listas de SharePoint de manera masiva y eficiente?

Una de las preguntas más repetidas entre quienes trabajan con datos en la nube es si es posible modificar la información de SharePoint directamente desde Excel, sin tener que abrir la web ni ir registro a registro. La respuesta es que sí se puede, y en este tutorial montamos un auténtico gestor de listas de SharePoint operado por completo desde Excel: conectamos con Power Query, generamos la conexión con un poco de código de Visual Basic y conseguimos no solo visualizar los datos, sino también modificarlos línea a línea o de forma masiva.

Conectar las listas con Power Query

El primer paso es identificar el sitio de SharePoint con el que vamos a trabajar. Copiamos la URL del sitio desde el navegador (normalmente incluye el nombre que estamos viendo en pantalla) y nos vamos a Excel.

Desde el menú de Power Query elegimos De otras fuentes → Desde una lista de SharePoint y pegamos la URL del sitio. El asistente nos genera automáticamente tres pasos: Origen, Navegación y Columnas. Lo importante aquí no es quedarnos con una lista concreta, sino con el primer paso, el de Origen.

En el Origen aparecen todos los elementos del sitio. Filtramos para quedarnos solo con las listas que nos interesan (en el ejemplo: empleados, oficinas, lista de empleados, vacaciones y ventas) y eliminamos los pasos posteriores. La clave está en una columna llamada ID: un código alfanumérico largo que identifica de forma única cada lista dentro de SharePoint. Nos quedamos con el listado de títulos y su ID, renombramos la consulta como listas y la cargamos a Excel.

Preparar la hoja de control

En una hoja nueva (la llamamos update) creamos un desplegable con Datos → Validación de datos → Lista, apuntando al listado de listas que acabamos de cargar. Así tendremos un selector de las listas disponibles.

Junto al desplegable colocamos un BUSCARX que recupera el ID correspondiente a la lista seleccionada y, si no encuentra nada, devuelve un texto del tipo "selecciona una lista" para que el gestor sea más amigable. A esa celda con el ID le asignamos el nombre ID_lista, de modo que luego sea más fácil referenciarla desde el código.

La macro que crea la conexión

Abrimos el editor de Visual Basic, insertamos un módulo nuevo y creamos la macro actualizar_sharepoint. Necesitamos tres variables:

  • URL (tipo String): la ruta del sitio de SharePoint.
  • hoja: referencia a la hoja update, por comodidad.
  • origen (tipo Variant): un array de dos elementos que define la conexión.

El array origen se compone así:

  1. El primer elemento es la URL del sitio más el directorio interno donde SharePoint guarda la información de las listas: se añade al final de la URL /_vti_bin.
  2. El segundo elemento identifica la lista concreta mediante su ID, tomando el valor de la celda con nombre ID_lista.

Con las variables listas, generamos la tabla con ListObjects.Add, indicando que el origen es externo (SharePoint), pasando el array origen como fuente, confirmando que hay vínculo y cabeceras, y fijando el destino en el rango E6 de la hoja. A la tabla resultante le asignamos un nombre fijo, lista_sharepoint, para poder referirnos a ella siempre igual (Excel, por defecto, numera las tablas como tabla1, tabla2, etc.).

Evitar conflictos al recrear la tabla

Cada vez que cambiamos de lista queremos borrar la tabla anterior y crear la nueva. Si no lo hacemos, Excel lanza un error porque una tabla no puede superponerse a otra. La solución es añadir, antes de generar la tabla, una línea que busque el objeto lista_sharepoint en la hoja y lo elimine. Gracias a haberla nombrado, localizarla y borrarla es inmediato.

Ejecución automática al cambiar el desplegable

Para no ejecutar la macro a mano, pegamos en el módulo de la hoja update un evento Worksheet_Change que detecta los cambios en la celda del desplegable (en este caso B4) y llama a la macro actualizar_sharepoint. Así, cada vez que seleccionamos una lista distinta, la tabla se actualiza sola con los datos correspondientes.

Modificar los datos y sincronizar

Aquí está lo realmente potente: la tabla no solo muestra los datos, también los hereda con los desplegables definidos en SharePoint (por ejemplo, los estados "abierta", "cerrada" o "por abrir" de las oficinas), manteniendo la integridad entre ambos lados.

Para enviar los cambios de vuelta, basta con hacer clic derecho sobre la tabla y elegir Sincronizar con SharePoint. Los cambios se reflejan de forma inmediata en la web. Podemos modificar valores, cerrar varias filas a la vez o incluso añadir registros nuevos: al crear una fila, Excel genera el código autonumérico vinculado y, al sincronizar, las nuevas entradas aparecen en SharePoint.

Para agilizarlo aún más, grabamos la acción de sincronizar como una macro y la asignamos a un botón (un icono de nube) en la hoja, evitando tener que ir al menú contextual cada vez.

Una advertencia importante sobre el autoguardado

Hay un detalle clave: conviene desactivar el autoguardado. Al grabar el fichero, Excel avisa de que la conexión con SharePoint se perderá; cuando lo hacemos a mano no es problema, porque rehacemos la conexión al ejecutar la macro. Pero con el autoguardado activado este proceso ocurre en segundo plano sin avisarte, la conexión desaparece sin previo aviso y puedes acabar pensando que algo se ha roto cuando en realidad fue el guardado automático.

Conclusión

Con un esquema sencillo —Power Query para inventariar las listas, un desplegable con BUSCARX y una macro de Visual Basic— conseguimos un gestor que centraliza todas las listas de SharePoint (incluso de sitios distintos) y permite visualizarlas y modificarlas a golpe de celda. Es una mejora enorme de productividad para quienes mantienen inventarios en SharePoint sin querer entrar registro a registro en la web.

Más contenido de Excel en InflueXcel