4

我有一个基于 Excel 的应用程序,它收集一些用户输入,并根据该用户输入进行一些计算。应用程序本身不存储任何用户输入或计算;当前,每当用户运行应用程序时,它都会将数据发送到 Access 数据库,并将一行插入到xlTable链接到 Sharepoint 列表的 Access 表中。相关代码为:

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。我已经阅读了一些关于使用 Web 服务更新 Sharepoint 的内容,但我无法弄清楚这些是如何工作的,或者如何在 VBA 中实现它们。

我需要关于我的 Sharepoint 列表的哪些信息才能从类似于上述代码的 Excel VBA 操作它?我需要添加任何参考资料吗?

4

2 回答 2

1

您可以使用 Camelot .NET 连接器使用下一版本 (2.0) 附带的 COM+ 组件直接从 VB/ASP 查询 SharePoint。请参阅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)
于 2012-04-18T18:27:53.730 回答
0

所有数据操作都可以通过名为. 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

于 2012-04-14T17:37:58.307 回答