今回は、ExcelのVBAマクロをWebアプリケーション化するアイデアをご紹介します。
これは実際にお客様の課題を解決する中で生まれた方法になります。
背景として、Excel帳票をチェックするためにVBAマクロを作成しユーザーへ配布していました。
しかし、以下の点が課題となっていました。
- 機能の追加や修正の度に改めて配布するのがシステム部門に大きな負担になっている。
- 更新に気づかず、古いバージョンを使い続けるユーザーがいて、チェック機構として不十分。
そこで、VBAマクロを出来るだけ少ない工数でWebアプリケーション化するために、Power PlatformのOfficeスクリプトを利用することを考えました。
構成イメージと処理の概要
構成イメージと処理の概要は次のようになります。
この仕組みの技術的ポイントは以下の3つです。
- Power Apps画面へExcelファイルをアップロード出来るようにする。
- Excelファイルを読み込んでOfficeスクリプトで処理し、結果をファイルに出力する。
- VBAマクロをOfficeスクリプトへ転換する。
これから複数回に分けて、実装方法を解説していきたいと思います。
第1回では、ポイントの1つ目であるPower Appsの添付コントロールの作り方を解説します。
前提
Power Appsのキャンバスアプリには様々なコントロールが挿入出来ますが、様々なファイルを添付する単体のコントロールはありません。
そこで、ファイルをアップロードする為の画面要素として添付コントロールを工夫して追加していきます。
ダミーリストの準備
まずは編集可能なSharePointサイトにサンプルのList(画像項目付き)を作成しておきます。ここでは「レシピ トラッカー」というテンプレートで新規リストを作成します。
新規からリストを選択し、「テンプレート」から「レシピ トラッカー」を選んで名前を付けて作成すると次のようなリストが作成されます。
編集フォームの追加
次に、Power Appsを開き、新規にキャンバスアプリを作成し、挿入メニューから編集フォームを選択して追加します。
以下のような画面になっていればOKです。
SharePointの接続
次に、このアプリに上で作成したSharePointリストをつなげます。
データの追加メニューからSharePointを検索し、該当のSharePoint環境を選択すると先ほど作成したリストが表示されるので、選択して接続します。
編集フォームのデータソースをこのリストに設定すると次のような画面になります。
添付コントロールの作成
今回のアプリでは、ファイルを添付する機能だけが欲しいので、追加されたカードフォームを選択し、添付ファイルコントロール以外は削除します。
一通り消し終わって添付コントロールだけが残った状態になれば完成です。
細かな設定を追加する前に、このアプリを部品取り用に別名で保存しておくと良いかもしれません。
添付コントロールの詳細設定
上で作成したコントロールを今回のアプリの要件に合うように設定していきます。
モード設定
元はリストデータを表示・編集するコントロールだったので、これを入力用に変更します。
Form全体を選択して、詳細設定からDefaultModeを「FormMode.Edit」を「FormMode.New」へ変更します。
ファイルタイプの制限
作成した添付コントロールはどんな種類のファイルでもアップロード出来てしまいます。
しかし、今回のアプリはExcelファイルのみを入力としたいので、それ以外のファイルタイプはエラーになってアップロード出来ないように設定します。
具体的には、添付コントロールのOnAddFileプロパティに以下のスクリプトを設定します。
表示テキストの変更
元の表示テキストでは分かりにくいので、適宜変更します。
例としては、DataCardValue5オブジェクトのNoAttachementsTextプロパティを変更し「ファイルをドラッグ&ドロップで添付できます」にしています。
テスト
ここまで出来たらアプリが期待通り動くかテストしてみます。アプリのプレビューを押して、実行画面を表示します。以下のような画面が出れば大丈夫です。
試しに「ファイルを開く」をクリックして適当なExcelファイルを選択してください。
無事にファイルが画面に添付されたでしょうか。
おわりに
現状ではPower Appsのコントロールには単体でファイル添付を実現するものが無いため以上のような回り道が必要になります。
ですが、一度作ってしまえばデータ接続部分を変えるだけで流用できますので、Power Appsにファイルを渡して処理をしたい方は是非試してみてください。
次回は、Power AppsからSharePointにファイルをアップロードし、それをOfficeスクリプトで処理していく方法を解説していきたいと思います。
宇津木 睦(日本ビジネスシステムズ株式会社)
ハイブリッドクラウド本部所属 製造業様向けデータ活用案件として、工場IoT導入やPower Platform活用推進に携わっています。 データ可視化やETLに関する技術が得意分野。
担当記事一覧