Как добавить элементы в список Sharepoint с помощью Excel VBA?

У меня есть приложение на основе Excel, которое собирает некоторый пользовательский ввод и производит некоторые вычисления на основе этого пользовательского ввода. Само приложение не хранит пользовательский ввод или вычисления; в настоящее время, когда пользователь запускает приложение, он отправляет данные в базу данных Access и вставляет строку в таблицу Access xlTable, связанную с списком Sharepoint. Соответствующий код:

sub sendToSharepoint(userName as string, folderPath as string, calculatedValue as long)
dim db as DAO.database
dim insertStr as string
'open connection to Access db
set db=OpenDatabase(myDatabasePath)
'build insert string
insertStr="insert into xlTable (userName,folderPath,calculatedValue,workDate) values (""" & userName & """,""" & folderPath & """," & calculatedValue & ","#" & Now & "#)"
'insert values into xlTable, which adds them to the Sharepoint list
db.execute insertStr,dbFailonError
end sub

Поскольку у нас были некоторые проблемы с отключением Access от Sharepoint и, следовательно, не заполнение списка, и в целом хотим упростить процесс передачи данных, я бы хотел отправить данные непосредственно из Excel в Sharepoint без использования Access. Я прочитал кое-что о SO об использовании веб-сервисов для обновления Sharepoint, но мне не удалось выяснить, как они работают в точности или как их реализовать в VBA.

Какая информация мне понадобится в моем списке Sharepoint для управления им из Excel VBA, аналогичного приведенному выше коду? Нужно ли добавлять какие-либо ссылки?

2 ответа

Все манипуляции с данными можно выполнить через SharePoint Список веб-службы с именем lists.asmx. Вы должны позвонить в это веб-устройство. Например UpdateListItems метод должен делать то, что делает MS Access.

Один из вариантов, который вы можете использовать для доступа к веб-сайту списков, - это "Microsoft SOAP Toolkit", который должен быть установлен как офисный компонент (никогда не делал этого, но вот статья, описывающая его: http://oreilly.com/pub/h/1306

Другой вариант - использовать библиотеку MSXML (которая всегда доступна) и отправлять запросы SOAP в виде простых HTTP-запросов. Затем разбор результатов в виде xml. Есть статья, показывающая примеры, как это сделать: http://blogs.msdn.com/b/jpsanders/archive/2007/06/14/how-to-send-soap-call-using-msxml-replace-stk.aspx


Вы можете использовать коннектор Camelot.NET для запроса SharePoint непосредственно из VB/ASP с помощью компонента COM +, который поставляется со следующей версией (2.0). См. http://bendsoft.com/net-sharepoint-connector/.

'define connection string
Dim connectionString
connectionString = "Server=mysharepointserver.com;Database=sites/test;Domain=;User=xxxx;Password=xxxx;Authentication=Ntlm;TimeOut=50;RecursiveMode=RecursiveAll;DecodeName=True;NoListFilters=False;ExpandUserFields=False;StrictMode=true;DefaultLimit=1000"
'activate connector com+
Dim connector
Set Connector = CreateObject("Camelot.SharePointConnector.Com.Connector")
' your query
Dim sql
sql = "insert into sharepointlist (userName, folderPath, calculatedValue, workDate) values ('" & userName & "', '" & folderPath & "', " & calculatedValue & ", '" & Now & "')"
' execute query
connector.ExecuteNonQuery(sql, connectionString)

licensed under cc by-sa 3.0 with attribution.