IT Hands-on Lab

小規模組織向けIT環境の構築・運用に役立つ情報を、ハンズオン形式で紹介しています。

【Excel VBA⇔Cloud】Dataverse Web API データ検索&更新1

Excel VBA ⇔ Cloud データ検索&更新(Dataverse Web API)1

Excel VBAでDataverse Web APIを使用して、クラウド上にあるDataverseのテーブルのデータ検索・更新を行う方法を紹介します。
  • 操作環境:
    • OS:Windows 11
    • Webブラウザー:Edge
  • 使用プラン(*):Microsoft 365 Business Premium
    *DataverseのテーブルおよびWeb APIにアクセスできる組織アカウントでサインインしていること

なお、この記事では、VBAの使用許可や開発メニュー表示といった初期設定や、VBAエディタの使い方の説明は割愛いたします。また、前の記事にも記載した通り、Dataverse for TeamsはWeb API未対応であり、この記事で扱うのはDataverseとなります。

 

 

Dataverse Web APIについて

Dataverse Web APIは、Dataverseのテーブルやデータに対し、プログラムで様々な処理を行うための仕様を取り決めたものです。
Dataverse Web APIの使用方法は公式記事に掲載されています。この記事で参考にした公式記事を以下に列挙します。

 

Entra管理C API初期設定

WebブラウザーよりMicrosoft Entra管理センターにアクセスし、左メニューの[ID>アプリケーション>アプリの登録]を選択し、[新規登録]を選択します。

図表2-1 Entra管理センターのアプリ登録へ

図表2-1 Entra管理センターのアプリ登録へ

 

以下の通り設定し、[登録]を選択します。

  • 名前:(Dataverse Web APIの接続用アプリであることが分かる名前)
  • アカウントの種類:この組織ディレクトリのみに含まれるアカウント
  • リダイレクトURL(選択肢):Web
  • リダイレクトURL(値):https://localhost

図表2-2 アプリ登録の実行

図表2-2 アプリ登録の実行

 

登録が完了し、サブメニューの[概要]画面に遷移したら、以下の値を控えておきます。

  • アプリケーション(クライアント)ID
  • ディレクトリ(テナント)ID

図表2-3 登録したアプリの情報確認

図表2-3 登録したアプリの情報確認

 

サブメニューの[APIのアクセス許可]を選択し、[アクセス許可の追加]を選択します。

図表2-4 登録したアプリのアクセス許可設定へ

図表2-4 登録したアプリのアクセス許可設定へ

 

[所属する組織で使用しているAPI]タブを選択し、[Dataverse]でキーワード検索し、候補に表示されたらこれを選択します。

図表2-5 アクセス許可設定(Dataverse API選択)

図表2-5 アクセス許可設定(Dataverse API選択)

 

[アクセス許可]の[user_impersonation]にチェックをつけ、[アクセス許可の追加]を選択します。

図表2-6 アクセス許可設定(対象選択)

図表2-6 アクセス許可設定(対象選択)

 

サブメニューの[証明書とシークレット]を選択し、[クライアントシークレット]タブを選択し、[新しいクライアントシークレット]を選択します。

図表2-7 クライアントシークレット作成へ

図表2-7 クライアントシークレット作成へ

 

以下の通り設定し、[追加]を選択します。

  • 説明:(Dataverse Web APIの接続用シークレットであることが分かる名前)
  • 有効期限:(適宜設定)

元の画面で今追加したクライアントシークレットの値を控えておきます。

図表2-8 クライアントシークレット作成と値の確認

図表2-8 クライアントシークレット作成と値の確認

 

PP管理C Dataverse環境の初期設定

この例では、新たな環境を用意し、Dataverseの初期設定を行います。
Power Platform管理センターにアクセスし、左メニューの[環境]を選択し、[新規]を選択します。

図表3-1 PowerPlatform管理センターの環境作成へ

図表3-1 PowerPlatform管理センターの環境作成へ

 

[新しい環境]画面で以下の通り設定し、[次へ]を選択します。

  • 名前:(環境の用途が分かる名前を適宜入力)
  • 種類:(用途に応じて選択。この例ではお試しということで[開発者]を選択)
  • Dataverseデータストアを追加しますか?:はい(種類が開発者の場合は自動で[はい]になる)

[Dataverseを追加]画面で [保存]を選択します。

図表3-2 PowerPlatform環境設定

図表3-2 PowerPlatform環境設定

 

[最新の情報に更新]を選択し、新しい環境が作成された旨のメッセージが表示されたら、その環境を選択します。

図表3-3 PowerPlatform環境作成完了の確認

図表3-3 PowerPlatform環境作成完了の確認

 

[設定]を選択します。

図表3-4 作成したPowerPlatform環境の設定へ

図表3-4 作成したPowerPlatform環境の設定へ

 

[ユーザーとアクセス許可]を展開し、[部署]を選択します。

図表3-5 ユーザーとアクセス許可の部署設定へ

図表3-5 ユーザーとアクセス許可の部署設定へ

 

Dataverse Web APIを実行できるユーザーの属する部署がなければ、[新しい部署]から作成します。この例では、画面に表示されている既存の部署に実行ユーザーが属しているため、これを使用することとし、部署名を控えておきます。

*既存の部署のリンクを選択すると、属しているユーザーを確認できます

図表3-6 部署名の確認

図表3-6 部署名の確認

 

前の画面に戻り、今度は[ユーザーとアクセス許可]の[アプリケーションユーザー]を選択します。

図表3-7 ユーザーとアクセス許可のアプリケーション設定へ

図表3-7 ユーザーとアクセス許可のアプリケーション設定へ

 

[新規アプリユーザー]を選択します。
前の工程で設定したEntra IDのアプリを選択し、[追加]を選択します。

図表3-8 新規アプリユーザーに作成したアプリを紐づけ

図表3-8 新規アプリユーザーに作成したアプリを紐づけ

 

以下の通り設定し、[作成]を選択します。

  • 部署:図表3-6で確認または作成した部署名
  • セキュリティロール:Environment Maker、System Customizer、システム管理者

なお、必要なセキュリティロールは公式記事に掲載されていますが、この記事の設定作業を行った環境では、[環境管理者]というセキュリティロールが見つかりませんでした。もしこれが表示された場合は、選択する必要があります

図表3-9 新規アプリユーザーに部署とロールを設定

図表3-9 新規アプリユーザーに部署とロールを設定

 

 

 

Dataverseテーブル用意

この例では、前の記事で紹介した、Excel VBAでSharePointリストをデータ検索した結果を流用し、テーブルを作成することにします。
画面のように、結果シートを[書籍管理.xlsx]などのファイル名で保存しておきます。

図表4-1 Dataverseテーブル用の元データ(Excel)を用意

図表4-1 Dataverseテーブル用の元データ(Excel)を用意

 

Power Appsの画面にアクセスし、右上の環境名を選択し、前の工程で設定した環境に切り替えます。

図表4-2 PowerPlatformの環境を切り替え

図表4-2 PowerPlatformの環境を切り替え

 

環境が切り替わったら、左メニューの[テーブル]を選択し、[新しいテーブル>新しいテーブルを作成する]を選択します。

図表4-3 PowerPlatformのテーブル作成へ

図表4-3 PowerPlatformのテーブル作成へ

 

[Excelファイルまたは.CSVをインポート]を選択します。

図表4-4 テーブル作成(オプション選択)

図表4-4 テーブル作成(オプション選択)

 

[デバイスから選択]ボタンを押し、この工程の最初に用意したExcelファイルを選択します。

図表4-5 テーブル作成(Excelインポート)

図表4-5 テーブル作成(Excelインポート)

 

インポートが完了したら、作成されたテーブルの[・・・]を選択し、[データを表示する]を選択します。
画面下部に列名とデータが表示されます。この例では、isbn_codeでエラーが発生していますので、この列名を選択し、[列の編集]を選択します。

図表4-6 テーブル作成結果の確認

図表4-6 テーブル作成結果の確認

 

isbn_codeの[データの種類]が数値(浮動小数点数)になっていることが原因でした。これを[1行テキスト]に変更し、[更新]を選択します。
もし他の列でもエラーが発生していたり、値の表示がおかしかったりする場合は、データの種類等を見直します。
テーブルの[・・・]を選択し、[プロパティ]を選択します。
テーブルの[表示名]と[複数形の名前]を分かりやすい値に変更し、[スキーマ名]を確認し、[保存]を選択します。

図表4-7 テーブル作成時のエラー解消

図表4-7 テーブル作成時のエラー解消

 

[保存して終了]を選択します。

図表4-8 テーブルの保存

図表4-8 テーブルの保存

 

保存が完了すると、テーブル一覧に作成したテーブルが表示されます。
右上の設定アイコンを選択し、[開発者リソース]を選択します。

図表4-9 PowerPlatformの開発者リソースへ

図表4-9 PowerPlatformの開発者リソースへ

 

[WebAPIエンドポイント]の値を控えておきます。

図表4-10 Web APIエンドポイントの確認

図表4-10 Web APIエンドポイントの確認

 

Excelファイル用意

VBAを実行するExcelファイルを用意します(拡張子はxlsm)。

  • Menuシート:各ボタン(ActiveXコントロール)を押すと、Dataverseのテーブルに接続し、データの検索や更新を行います。

図表5-1 ExcelファイルのMainシート

図表5-1 ExcelファイルのMainシート

 

  • Searchシート:Menuシートの[書籍管理データ検索]ボタンを押すと、Dataverseのテーブルの検索結果をこのシートに出力します。

図表5-2 ExcelファイルのSearchシート

図表5-2 ExcelファイルのSearchシート

 

  • Renewシート:このシートに追加・変更・削除対象(Action列で識別)のデータを入力しておき、Menuシートの[書籍管理データ反映]ボタンを押すと、Dataverseのテーブルに反映されます。

図表5-3 ExcelファイルのRenewシート

図表5-3 ExcelファイルのRenewシート

 

  • VBAプロジェクト:Mainシート上にソースを実装します。画面に表示されているのは検索・更新ボタンクリック時にデータ検索・更新のプロシージャを呼び出すソースです。データ検索・更新のプロシージャ自体のソースは次の記事で紹介します。

図表5-4 ExcelファイルのVBAプロジェクト

図表5-4 ExcelファイルのVBAプロジェクト

 

Web APIのデータのやり取りはJson型というデータフォーマットを使用します。こちらのサイトにVBA用の変換モジュールJsonConverter.basがあるので、ダウンロードします。

図表5-5 GitHubのVBA-JSON変換モジュール入手

図表5-5 GitHubのVBA-JSON変換モジュール入手

 

ダウンロードしたZIPを展開しておきます。VBAのプロジェクトエクスプローラ上で右クリックし、[ファイルのインポート]を選択します。
展開したファイル内のJsonConverter.basを選択します。
VBAのプロジェクトエクスプローラー上に、[標準モジュール>JsonConverter]が表示されます。

図表5-6 VBA-JSON変換モジュールのインポート

図表5-6 VBA-JSON変換モジュールのインポート

 

[ツール>参照設定]を選択し、[Microsoft Scripting Runtime]のチェックをオンにします。これが未実施の場合、API呼び出し時のHTTPリクエストオブジェクトの作成でエラーが発生します。

図表5-7 VBAプロジェクトの参照設定

図表5-7 VBAプロジェクトの参照設定

 

次の記事に続きます。

 

 

当ブログ内の連載記事

elmgrn.hatenablog.com

 

当ブログ内の関連記事

elmgrn.hatenablog.com