none
VBAでOffice365 SharepointリストをAccess2013で開きデータのコピーをエクスポートしたい RRS feed

  • 質問

  • どなたか教えてください。下記のコードでOffice365 SharepointのデータをAccessでローカルフォルダにインポートすることはできました。しかし、表題の動作のSharepointリストをAccessで開き、『データのコピーをエクスポートする』とSharepointリストのデータをAccessに『インポートする』では落としたデータに差があるようで、その後のプログラムがうまく走りません。
    また、落としたデータに違いはありませんがAccessの見た目に差異が見受けられます。

    *エクスポートしたデータ:落としたデータの左上にタブのようなものがあり、そこにテーブル名と同じものが記載されている

    *インポートしたデータ:タブは存在せず

    インポートが可能なコードは以下になります。
    どなたかSharepointリストをAccessで開き、データのコピーをエクスポートする
    が実行できるようご教授よろしくお願いします。

    Sub transfersharepointlistAAA()

        Dim catTest    As New ADOX.Catalog
        Dim strConnect As String
       
        Dim strDBNAME  As String
       
        strDBNAME = "C:\MyFolder\Rawdata\AAA.accdb"  'インポート先のaccdb
       
    '参照設定:Microsoft Scripting Runtime   
     Dim FSO As Object
        Set FSO = CreateObject("Scripting.FileSystemObject")
       
        If FSO.FileExists(strDBNAME) Then
        'ファイルが存在していた場合の処理を入れる。
            FSO.DeleteFile strDBNAME      'ファイルが存在したら消す   
        End If
       
        Set FSO = Nothing  

       
    '参照設定:Microsoft ADO Ext 2.8 for DDL and Security
        'データベースの新規作成
        ' ADOコネクション文字列の指定
        strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
        ' データベースの作成 名前を指定する
        catTest.Create strConnect & strDBNAME
        ' データベースを閉じる
        Set catTest = Nothing

       
    '参照設定:Microsoft Access 15.0 Object Library   
        Dim strSPServer As String
        Dim objAcc As Access.Application
       
        Const SERVER As String = "xxx.sharepoint.com/xxxxx/BBB"
        Const LISTNAME As String = "{a56aec52-e787-4c87-8411-c6b8ebb29563}"
        Const VIEWNAME As String = "{73bab5df-3de2-48a6-bb30-81350c112097}"
       
        strSPServer = "https://" & SERVER
       
        Set objAcc = GetObject("C:\MyFolder\Rawdata\AAA.accdb", "Access.Application.15")
        objAcc.Visible = True

        objAcc.DoCmd.transfersharepointlist acImportSharePointList, strSPServer, LISTNAME, VIEWNAME, "AAA", True
       
       
    End Sub

    2019年12月9日 7:44

回答

  • 他サイトにて回答が得られました。

    ADOコネクションで.mdbと.accdbに接続する方法が異なっており

    strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="

    は.mdb用だったようです。

    strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="

    とすることで.accdbへ接続となり後続のコードもデバッグが出ることなく通りました。
    ありがとうございました。

    2019年12月13日 7:24