実現したいこと
会社のネットワークでsharepointオンラインを使用していて、PowerAppでの変換テーブル用にexcelファイルが存在している。
PowerAppのデータベース登録をクライアント側からvbaで行ないたくて、このexcelファイルにadoで接続する方法を模索している。
excelファイルをローカルでコピーして持っておくと、更新が二重になって齟齬も生じるのでコピーを持つのは避けたい。
発生している問題・分からないこと
・excelのデスクトップからは該当のファイルは普通に開けるのでアクセスには(WindowsAuthが端末で認証できているためアクセス権限の)問題はないと考えるが、仮にそうでなかった場合に認証情報を送る必要が生じることは考えられる。
・ファイルパスを下記の様のコードで指定するとcon自体は開けるが、テーブル数は0だしCatalogを作成しても要素はない(本当にアクセスできてる?)
・excelファイルとして開いてRange.findみたいなことはしたくない(それしか方法がないならやむを得ないが、excelファイルをデータベースとして使用できる以上実現できると踏んでいる)
該当のソースコード
Dim Con as New ADODB.Connection con.connectionstring="Provider=Microsoft.ACE.OLEDB.12.0;Data SOURCE="& (SharePointオンライン上のexcelファイルのフルパス) &";Extended Properties='Excel 12.0 XML;HDR=Yes';" con.open 'この時点でcon.status=1 dim rs as New ADODB.Recordset rs.open "select * from [テーブル$]",con '←ここでファイルが見つかりませんのエラーが出る
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
ファイルへの接続(ADODB.Connection)のところでだいぶ躓きましたが、そこは通過してると思っています。
VBAを作動させているEXCELブック上に当該EXCELのテーブル自体をWorkbookConnectionで参照することもできているので、WorkbookConnectionにADOから接続する方法でも構いません(この方法はWorkbookConnectionをADOで開く方法をWEBで見つけられなくてできていない)。
補足
使用しているEXCELはMicrosoft365(Excel16.0)ですが、Providerを16.0に変えたらConを開くことすらできなかったです。
・WorkbookConnectionをテーブルクエリとしてEXCELブックに展開すればADOでアクセスできる。
(できることは知っているがブックを参照するのにローカルのブックにミラーするなど冗長の極みなのでやりたくない)
・ACCESSでワンバウンドさせようとしたがSHAREPOINTオンライン上のEXCELをデータソースにはできなかった(xmlしかソースにできないというお話)
データの管理をSQLサーバでやっている中で、会社の一部がPowerBIなんぞを使い始めてしまったので、極めて連携の取りにくい仕組みになってしまっている。Sharepoint側とSQLサーバ側と簡単にコネクトできればいいのにコネクタが標準でついてない。コネクタさえ標準実装していればこんな無駄な苦労はしないで済むのに。

あなたの回答
tips
プレビュー