Vincular Vistas de Sharepoint desde Access 2007

Fecha de publicación: 12-feb-2012 19:39:41

30/12/2008Dejar un comentario

Si desde Access 2007, en vez de vincular una Lista de Sharepoint, vinculamos una Vista de ésta, obenemos claras ventajas, la más evidente limitar el tráfico de datos por la red a los que realmente queremos, pero también otras bastante interesantes, como restringir los datos a los del usuario registrado en el sitio Sharepoint. Sin embargo, los asistente de Access sólo facilitan vincular Listas, debiendo recurrir al método TransferSharePointList para poder conseguirlo.

La misma ayuda de Access sobre TransferSharePointList nos informa de cómo obtener algunos de los paramátros necesarios:

Para obtener el identificador GUID de una lista o una vista del sitio de SharePoint puede utilizar el procedimiento siguiente:

    1. Abra la lista de Windows SharePoint Services.

    2. Si no se muestra la vista que desea, haga clic en la flecha desplegable Ver y, a continuación, seleccione la vista deseada.

    3. Haga clic en la flecha desplegable Ver y, a continuación, seleccione Modificar esta vista.

      1. La dirección de la barra de dirección del explorador contiene los identificadores tanto de la lista como de la vista. El identificador GUID de la lista sigue a List=, y el de la vista sigue a View=. Sin embargo, en la dirección, cada carácter { (abrir llave) se representa mediante la cadena %7B, cada carácter - (guión) mediante la cadena %2D, y cada carácter } (cerrar llave) mediante la cadena %7D. Por ejemplo:

      2. http://MySite12/_layouts/ViewEdit.aspx?List=%7B2A . . . 7D&View=%7B357B4FE6 . . . 1579B%7D

      3. Para poder utilizar los identificadores GUID de la dirección como argumentos de esta acción de macro, primero debe reemplazar cada cadena %7B por el carácter {, cada cadena %2D por el carácter - y cada cadena %7D por el carácter }. No incluya el carácter & (y comercial) que sigue a la cadena %7D en el identificador GUID de la lista.

(Me he permitido recortar la URL que la ayuda usa de ejemplo para que me quepa mejor y porque, en el mismo ejemplo de la ayuda, ya la URL está truncada al final)

Le faltan unas imágenes que ayuden un poco ¿no? Pues se las ponemos:


Seguir las instrucciones “a mano alzada”, cortando y pegando con el ratón y editando una cadena tan larga, se hace aguantando la respiración y, al final, casi seguro que sale mal (a mí nunca me ha salido bien). Pero para seguir instrucciones al pie de la letra está la programación y en Access contamos con VBA, así que me he hecho el siguiente procedimiento que sólo necesita que copiemos la URL y se la pasemos como cadena de texto:

'---------------------------------------------------------------------------------------' Procedure : VincularVistaWSS' DateTime : 30/12/08 20:36' Author : Chea' Purpose : Vincula una Vista de Sharepoint a partir de una URL' Para vincular una Vista de Sharepoint, debemos, en primer lugar, ir al' sitio de Sharepoint, a la página de configuración de dicha vista y copiar' la URL completa: Esa URL, delimitada por comillas, es el argumento que' debemos pasar a esta función en el parámetro CadenaURL'---------------------------------------------------------------------------------------'Public Sub VincularVistaWSS(CadenaURL As String, Optional NombreTabla) Dim GUIDList As StringDim GUIDView As StringDim strSite As StringDim v As Variant, V2 As Variant, V3 As Variant, i As IntegerDim stTmp As String' "Traducimos" caracteres de la cadena URL CadenaURL = Replace(CadenaURL, "%7b", "{") CadenaURL = Replace(CadenaURL, "%7d", "}") CadenaURL = Replace(CadenaURL, "%252E", ".") CadenaURL = Replace(CadenaURL, "%252F", "/") CadenaURL = Replace(CadenaURL, "%253A", ":") CadenaURL = Replace(CadenaURL, "%2D", "-") ' Obtenemos la segund parte de la URL, desde el aspx? v = Split(CadenaURL, "aspx?") stTmp = v(1) 'Obtenemos las distintas secciones, que van separadas por "&" v = Split(stTmp, "&") For i = 0 To UBound(v) V2 = Split(v(i), "=") If Trim(V2(0)) = "List" Then GUIDList = V2(1) End If If Trim(V2(0)) = "View" Then GUIDView = V2(1) End If If Trim(V2(0)) = "Source" Then strSite = V2(1) V3 = Split(strSite, "/Lists/") strSite = V3(0) End IfNext i ' Vinculamos la vista DoCmd.TransferSharePointList acLinkSharePointList, strSite, GUIDList, GUIDView, NombreTabla