1

必要に応じて追加/編集などをループできるように、Excelでadodbレコードセットを作成できるようにしたいと思います。次の例では、レコードセットが作成されますが、最後の行に「SharePointサイトに接続できません。後でもう一度やり直してください」というエラー(80004005)がスローされます。

    strLURL = "<SharePoint list URL>"
    strGUID = "{D16F31E9-41F3-4193-8926-35FFC0714C86}"
    intIMEX = 1
    strList = "Planner"
    strConn = "Provider=Microsoft.ACE.OLEDB.12.0;WSS;"
    strConn = strConn & "IMEX=" & intIMEX & ";"
    strConn = strConn & "RetrieveIds=Yes;"
    strConn = strConn & "DATABASE=" & strLURL & ";"
    strConn = strConn & "LIST=" & strGUID & ";"
    strConn = strConn & "VIEW=; RetrieveIds=Yes;"
    strConn = strConn & "Table = " & strList

    Dim cnCur As New ADODB.Connection
    Dim rsCur As New ADODB.Recordset
    Dim strSQL As String

    cnCur.Open ConnectionString:=strConn
    strSQL = "SELECT * FROM [" & strList & "]"
    rsCur.Open Source:=strSQL, ActiveConnection:=cnCur
4

2 に答える 2

2

SQL Serverデータベースに直接アクセスしてはならないのは事実ですが、質問で説明されている手法はこのルールに違反していません。説明されている手法では、SQLのようなAPIを使用してリストをクエリします。クエリが実際のSQLServerテーブルを参照していないことに気付くでしょう。

于 2012-10-29T15:46:52.660 に答える
1

ADODB接続を使用して解決策を見つけることができませんでした。代わりに、listobjectsを操作するためのメソッドを使用しました。これは非常に簡単です。

'Declare variables
Dim lo as ListObject
Dim ws as Worksheet
Dim sServerName As String 'site address e.g "http://yoursite.com/_vti_bin/"
Dim sName As String 'list id e.g {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
Dim sGUID As String 'view GUID e.g {yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy}


'Create listobject
Set lo = ws.ListObjects.Add( _
       SourceType:=xlSrcExternal, _
       Source:=Array(sServerName, sName, sGUID), _
       Destination:=Range("A1") _
        )

'Do something with your listobject here

'Push updates back to server
lo.UpdateChanges (xlListConflictDialog)
于 2013-04-24T11:05:46.290 に答える