Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Access 2013)
VBAでOffice365 SharepointリストをAccess2013で開きデータのコピーをエクスポートしたい
投稿日時: 19/12/11 15:34:31
投稿者: RyuRyu

どなたか教えてください。下記のコードでOffice365 SharepointのデータをAccessでローカルフォルダにインポートすることはできました。しかし、表題の動作のSharepointリストをAccessで開き、『データのコピーをエクスポートする』とSharepointリストのデータをAccessに『インポートする』では落としたデータに差があるようで、その後のプログラムがうまく走りません。
また、落としたデータに違いはありませんがAccessの見た目に差異が見受けられます。
SharepointからSharepointリストをAccessで開く前にOffice365ではなく古いバージョンで開くを選択してから行っています。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
      
  Dim FSO As Object
     Set FSO = CreateObject("Scripting.FileSystemObject")
      
     If FSO.FileExists(strDBNAME) Then
     'ファイルが存在していた場合の処理を入れる。
        FSO.DeleteFile strDBNAME 'ファイルが存在したら消す
     End If
      
     Set FSO = Nothing
     
    'データベースの新規作成
    ' ADOコネクション文字列の指定
    strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
     ' データベースの作成 名前を指定する
    catTest.Create strConnect & strDBNAME
     ' データベースを閉じる
    Set catTest = Nothing
 
     
     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

回答
投稿日時: 19/12/12 17:53:45
投稿者: sk

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

引用:
strDBNAME = "C:\MyFolder\Rawdata\AAA.accdb" 'インポート先のaccdb

引用:
'データベースの新規作成
' ADOコネクション文字列の指定
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
' データベースの作成 名前を指定する
catTest.Create strConnect & strDBNAME

ACE ではなく Jet によって mdb ファイルを作成しているためでしょう。
(拡張子が .accdb になっているだけで、実際のファイル保存形式は mdb ファイル)

投稿日時: 19/12/13 16:18:48
投稿者: RyuRyu

skさん
ご回答ありがとうございます。返信が遅くなり申し訳ありません。処理を確認しておりました。
ありがとうございます!ご指摘の通り
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="

strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
に変更したら後続のコードも通りました。
Accessへの接続方法が.mdbと.accdbで異なっていたなんて知りませんでした。教えて頂きありがとうございました。また色々と教えてください!