4

ユーザー入力を収集し、そのユーザー入力に基づいて計算を行う Excel ベースのアプリケーションがあります。アプリケーション自体は、ユーザー入力や計算を保存しません。xlTable現在、ユーザーがアプリケーションを実行するたびに、データが Access データベースに送信され、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 から切断されてリストにデータが入力されないという問題があり、一般的にデータ転送プロセスを簡素化したいので、Access を使用せずに Excel から SharePoint にデータを直接送信したいと考えています。SO で Web サービスを使用して SharePoint を更新する方法についていくつか読んだことがありますが、これらが正確にどのように機能するか、または VBA でそれらを実装する方法を理解できませんでした。

上記のコードのように Excel VBA から SharePoint リストを操作するには、Sharepoint リストについてどのような情報が必要ですか? 参照を追加する必要がありますか?

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

すべてのデータ操作は、という名前の SharePointリスト Web サービスlists.asmxを介して行うことができます。その Web サービスを呼び出す必要があります。たとえば、UpdateListItemsメソッドは現在 MS Access が行っていることを行う必要があります。

リスト Web サービスにアクセスするために使用できるオプションの 1 つは、Office コンポーネントとしてインストールする必要がある "Microsoft SOAP Toolkit" です (これを行ったことはありませんが、それについて説明している記事があります: http://oreilly.com/pub/h /1306

もう 1 つのオプションは、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 に答える