FIXER cloud.config Tech Blog
Power AutomateでExcelデータを転記したWordファイルを自動作成する
2021年06月25日 11時00分更新
本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「Power Automateを用いて書類を自動作成する #PowerPlatformリレー」を再編集したものです。
Power Automateは業務の自動化に大きな力を発揮します。
特に、コネクタが存在するものに関しては本当に画面をポチポチするだけで自動化が可能です。
今回はその一例としてExcelファイルの中身からWordファイルを自動生成する方法をご紹介します。
目的
Excelファイル上のデータを転記したWordファイルを作成する。
前提
・Excel上のデータはテーブル形式になっており、一行を一ファイルとして生成する
・Power Automateの有料ライセンスがある(プレミアムコネクタを使用するため)
流れ
1. Wordテンプレートを作成する
2. 各種ファイルを配置する
3. Automateを作成する
4. 実行!
Wordテンプレートの作成
まず最初に、生成される書類のひな型となるWordファイルを作成します。
一般的なWordファイルと異なるのは、Word の機能のひとつであるテキストコンテンツコントロールを用いて値をはめ込む場所を指定するということです。
1-0. Wordアプリ上に開発タブを表示させる
この作業は開発タブが見えていない時だけ行なってください。
デフォルトだと見えていないはずです。
アプリ版のWordを起動し、オプション ⇒ リボンのユーザー設定⇒右側のメインタブ内から開発(ユーザー設定)にチェックを入れてください。
1-1. 出力するファイルの形を作る
いつも通りに書類を作成してください。
既存のファイルを開いても構いません。
1-2. テキストコンテンツコントロールを追加する
値をはめ込みたい部分を選択し(1)、開発タブを開きます(2)。
続いてテキストコンテンツコントロールボタンを押します(3)。
値をはめ込みたい場所すべてに上記の手順を繰り返してください。
テキストコンテンツコントロールになった場所はデザインモードに変更することで確認することができます。
水色の記号で囲まれたところがテキストコンテンツコントロールです。
Automate側では記号の内側の文字がそのまま値をはめ込む宛名になります。
デザインモードにすると行の高さが変わっているように見えますが、実際に出力されるものは元の高さのままなのでご安心ください。
また、テキストコンテンツコントロールは、デフォルトでは改行に対応していません。
改行が含まれる文字列をはめ込みたい場合には、対象のコンテンツコントロールのプロパティ(4)から改行の使用可(5)にチェックを入れる必要があります。
各種ファイルを配置する
先ほど作ったWordファイルや元データとなるExcelファイルをSharePointに配置します。
今回はSharePointを使用していますが、Automateから触れればどこでも大丈夫です。
今回の元データとなるExcelファイルは下のようになります。
列名とテーブル名は後で使用するので覚えておきましょう。
Automateを作成する
3-1. フローを作成する
何をトリガーにしても大丈夫です。
今回の例ではインスタントクラウドフロー(手動で実行ボタン押すと動くやつ)を使います。
3-2. Excelのテーブルからデータを取得する
「Excel Online (Business)」 コネクタを選択し、アクション一覧の中から「表内に存在する行を一覧表示」を選択します。
場所、ドキュメントライブラリ、ファイルで先ほど配置したExcelファイルを選択します。
続いて、テーブルでExcelファイル内のデータを取得したいテーブルを選択します。
3-3. 繰り返しの準備をする
「コントロール」コネクタの中の「Apply to each」アクションを選択します。
以前の手順から出力を選択という項目には「動的なコンテンツ」⇒「表内に存在する行を一覧表示」⇒「value」を選択します。
3-4. Wordテンプレートに値をはめ込む
「Word Online (Business)」コネクタの中の「Microsoft Wordテンプレートを事前設定します」アクションを選択します。
場所、ドキュメントライブラリ、ファイルで使用するテンプレートファイルを指定すると、ファイルの中のテキストコンテンツコントロールが表示されます。
それぞれにはめ込みたい値を入れていきます。
この時「表内に存在する行を一覧表示」の中の項目を使用すると、繰り返し毎に別の行の値が使用されます。
日時の所は本筋とは関係ないので後述します。
3-5. ファイルを作成する
ファイルコンテンツからファイルを作成します。
今回の例ではSharePoint上にファイルを出力します。
サイトのアドレスとフォルダーのパスで出力したい場所を指定し、ファイルコンテンツには「Microsoft Wordテンプレートを事前設定します」 ⇒ 「Microsoft Word文章」を選択します。
また、ファイル名は被らないように動的な要素を用いる必要があります。
実行!
保存ボタンを押して問題が無ければテストを実行してみましょう。
この時、フローが無効ですというメッセージと共にテストが実行できない場合があります。
その場合にはフローのトップページからフローをオンにする必要があります。
……の所(6)をクリックしてオンにする(7)をクリックします。
無事に実行されると、指定した出力先にWordファイルが作成されているはずです。
おまけ(時間の表記)
Excel上で入力した日付は単純な文字ではなく、基準の日時からの経過時間を保持しています。
そのことは Excel上で日付を入力したセルの書式設定を標準にしてみると確認できます。
そこで、Automateでは基準の時間にExcel上の日付を足すことで本来の日時を得ることができます。
また、ここで得られる日時は”2021-06-16T00:00:00″みたいな人間に見辛いものなので見やすい形に整形します。
日時を入力したいところで動的なコンテンツではなく式を選択し「formatDateTime(body(‘時間への追加’),’MM月dd日’)」と入力します。
‘MM月dd日’の部分が日付表示のフォーマットを指定しています。
yが年、Mが月、dが日で、重ねることで最小の桁数を表現できます。
途中の記号や文字はそのままになるので、’MM月dd日’は’06月16日’のようになります。
参考
Power AutomateでExcel日付(シリアル値)を日付形式に変換する – Qiita
How to customize or format Date and Time values in a flow – Power Automate | Microsoft Docs
Power Appsの日時操作のまとめ | cloud.config Tech Blog (cloud-config.jp)
佐藤 晴輝/FIXER
フロントからバック、ネットワークまである程度触れるガジェットオタクです。
好きな言語はC#でIoTと画像処理が得意です。