Как использовать MS Access / VBA для получения списка пользователей в группе Sharepoint - PullRequest
1 голос
/ 28 июля 2011

Я создаю приложение MS Access 2007, интегрированное со списком SharePoint 2010 в качестве источника данных.

Мне нужно проверить пользователей, которые являются членами определенной группы пользователей Sharepoint, для поддержки некоторых функций, которые я встраиваю в приложение. Есть ли способ определить отношение пользователей sharepoint к группам из кода VBA? Спасибо.

Ответы [ 2 ]

1 голос
/ 06 февраля 2012

Я использую запрос CAML через SOAP, затем передаю ответ в анализатор XML

может потребоваться некоторая подстройка, но это поможет вам в этом. Я использую что-то подобное.

Это может показаться сложным, но, если все хорошо, вам просто нужно изменить URL своего сообщества.

включить 'Debug.Print .responseText и' debug.print .status для устранения любых проблем. Статус 200 означает, что сайт найден нормально.

function start_here()

set user_list = get_users("http://sites.company.com/sites/00672")

for each n in user_list
    debug.print str(n), userlist(str(n))
next

end function

Function get_users(site_URL)

Dim xmlDoc
Set xmlDoc = CreateObject("Msxml2.DOMDocument")

request = "<?xml version='1.0' encoding='utf-8'?>" + _
        "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" + _
        " xmlns:xsd='http://www.w3.org/2001/XMLSchema'" + _
        " xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>" + _
            "<soap:Body>" + _
                "<GetUserCollectionFromSite xmlns='http://schemas.microsoft.com/sharepoint/soap/directory/' />" + _
            "</soap:Body>" + _
        "</soap:Envelope>"

    With CreateObject("Microsoft.XMLHTTP")
      .Open "Get", site_URL & "/_vti_bin/usergroup.asmx", False, Null, Null
      .setRequestHeader "Content-Type", "text/xml; charset=utf-8"
      .setRequestHeader "SOAPAction", "http://schemas.microsoft.com/sharepoint/soap/directory/GetUserCollectionFromSite"
      .send request
      'Debug.Print .status
      'Debug.Print .responseText
       xmlDoc.LoadXML (.responseText)
     End With

Set nodesCollection = xmlDoc.SelectNodes("//Users/User")
Set ID = xmlDoc.createNode(1, "xml", "")
Set user_name = xmlDoc.createNode(1, "xml", "")

Set user_col = New Collection

    For Each nodeElement In nodesCollection
        Set ID = nodeElement.Attributes.getNamedItem("ID")
        Set user_name = nodeElement.Attributes.getNamedItem("Name")
        user_col.Add user_name.Text), Str(ID.Text)
    Next

Set get_users = user_col

end function
0 голосов
/ 18 июня 2019

Я думаю, в функции есть небольшая опечатка ....

Вместо: user_col.Add user_name.Text), Str (ID.Text)

Должно быть - без дополнительного): user_col.Добавить user_name.Text, Str (ID.Text)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...