Office関連

[Office VBA]ADOでSharePointリストに接続する方法

先日Twitterで @blacklist_ryu さんが下記ツイートをされていました。

ADOでSharePointリストに接続するところで苦戦されているようで、私も気になったので確認してみました。

参考サイト

上記サイトによると、SharePointサイトのURLとリストのIDさえ分かれば接続できるようなので、まずはID(GUID)を取得してみます。

ページのソースからSharePointリストIDを取得

接続したいリストをブラウザーで開き、ソースを表示したところ、「listId」として、それらしい値が載っていました。

ただ、この方法ではサイトの仕様が変わるとIDが取得できなくなる可能性もあるので、別の方法も試してみます。

Get-PnPListによるSharePointリストIDの取得

SharePoint Online: PowerShell to Get List ID (GUID)」によると、PnP PowerShellライブラリのGet-PnPListで簡単に取得できそうです。

PnP PowerShellのインストール

PnP PowerShellをまだインストールしていない場合は、PowerShell(管理者権限)で下記コマンドを実行します。

Install-Module SharePointPnPPowerShellOnline

Get-PnPListの実行

PnP PowerShellがインストールできていれば、上記参考サイトにある通り、Get-PnPListでID含めてサイトの情報を列挙できます。

$url = "https://****.sharepoint.com/"
$usr = "(user)@****.onmicrosoft.com"
$cred = Get-Credential -UserName $usr -Message "Type the password."
Connect-PnPOnline -Url $url -Credentials $cred
Get-PnPList | Select-Object Title, Id

ADOでSharePointリストに接続する方法

リストのIDさえ分かれば、あとはADOで接続するだけですね!
接続文字列は下記サイトに分かりやすくまとめてありました。

Public Sub Sample()
  Dim cn As Object 'ADODB.Connection
  Dim rs As Object 'ADODB.Recordset
  Const SharePointUrl As String = "https://****.sharepoint.com/"
  Const ListId As String = "{********-****-****-****-************}"
  
  Set cn = CreateObject("ADODB.Connection")
  cn.Open "Provider=Microsoft.ACE.OLEDB.16.0;WSS;IMEX=2;RetrieveIds=Yes;DATABASE=" & SharePointUrl & ";LIST=" & ListId & ";" 'プロバイダーは適宜変更
  Set rs = CreateObject("ADODB.Recordset")
  With rs
    .Open "SELECT * FROM list", cn
    .MoveFirst
    Do Until .EOF
      Debug.Print .Fields.Item("Name").Value
      .MoveNext
    Loop
    .Close
  End With
  cn.Close
End Sub

上記コード実行時、365アカウントでサインインしていない場合は下図のようなログイン画面が表示されるので、必要事項を入力してサインインします。

接続に問題が無ければ、下図のようにリストの内容が出力されます。

SharePointのリストに関しては、ロールアウトが始まったばかりのMicrosoft Listsと、どのような使い分けがされていくのかまだ不透明な部分がありますが、すぐに使えなくなることは無いだろうと思います。
(Microsoft Listsに関しては下記 @ai_yamasaki さんのブログで詳しく説明されています。)

また、ADOによるSharePointリストへの接続に関して検索したところ、下記サイトを見つけました。

これによると、接続する際はリストのIDではなく、リスト名でも大丈夫なようです。
わざわざIDを取得した手間は一体何だったんだ・・・!?😅

ADOの解説サイト

関連記事

  1. Office関連

    Officeアプリケーションの「最近使用したファイル」を削除するVBScript

    WordやExcel等のOfficeアプリケーションでは、下記サイトに…

  2. Office関連

    [Office]アイコンの検索機能が超便利!

    ※ 下記情報はInsider版のOfficeを元にしています。バージョ…

  3. Office アドイン

    【2019年6月版】Excel カスタム関数(Excel Custom functions)の紹介

    1年半ほど前、Excel カスタム関数について記事を書きました。…

  4. Office関連

    [PowerPoint]Applicationオブジェクトのイベントを利用する

    PowerPointのApplicationオブジェクトには、スライド…

  5. Office アドイン

    [Officeアドイン]地図記号挿入アドイン

    ちょっとずつ作成していたWord用のOffice アドインがようやくO…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP