🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

SharePoint

SharePointは、マイクロソフトにより開発された、ソフトウェア開発のドキュメント管理やコラボレーションを行うプラットフォームの総称です

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

3746閲覧

VBAでSharepointリストをAccessで開き、『データのコピーをエクスポートする』

ryuryu12282000

総合スコア4

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

SharePoint

SharePointは、マイクロソフトにより開発された、ソフトウェア開発のドキュメント管理やコラボレーションを行うプラットフォームの総称です

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2019/12/12 06:56

前提・実現したいこと

SharepointリストをAccessで開き、『データのコピーをエクスポートする』をExcel VBAで行いたい。

発生している問題・エラーメッセージ

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

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

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

該当のソースコード

Excel VBA
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

試したこと

TransferTypeをacLinkSharepointlistにしてみましたがタブは現れませんでした。

補足情報(FW/ツールのバージョンなど)

以下、Versionの情報です。
Sharepoint:Office365
Access:2013
Excel:2013

SharepointリストをAccessで開き、データのコピーをエクスポートする
が実行できるようご教授よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

他サイトで回答が得られました。
ADOコネクションが.mdbと.accdbで異なっておりました。
.mdbへの接続用の
strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="

.accdbへの接続用の
strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
に書き換えると後続のコードもデバッグが出ずに処理できました。
ありがとうございました。

投稿2019/12/13 07:31

ryuryu12282000

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問