Power Apps / Power Automate で帳票をPDF出力すると、だいたいここで詰まる — Excel・Wordテンプレート、PDF関数の限界と5つの出力方法の比較
- DATE
- 2026-04-06
- REVISION
- A
- AUTHOR
- スルガクラフト合同会社
- SHEET
- 01 / 01
見積書、請求書、発注書。ExcelやWordで作っていた帳票を、Power AppsやPower Automateで出そうとする方は多いと思います。アプリの画面をPDFにする。テンプレートに値を差し込んで、PDFにして、メールで送る。最初の1枚が出た瞬間は「これで行ける」と思うものです。
本番で回し始めると、だいたい同じところで詰まります。
日本企業の帳票要件は独特です。B4・B5の用紙サイズ、方眼紙レイアウトに罫線びっしり、印影の透過合成、セル結合の嵐。海外製品が想定する「A4にテーブルを流し込む」だけでは到底カバーできない世界があります。
本記事では前半で、Power AppsのPDF出力と、Power AutomateのExcel / Word帳票で詰まるポイントを整理します。後半では、その先の選択肢として、Dataverseから帳票を出力する主な5つの方法を日本企業の帳票要件を軸に比較します。私自身がすべての方法を検証した上での所感です。
Power Apps / Power Automateで帳票をPDF出力すると詰まるところ
Power AppsのPDF関数は試験段階、Printは1ページだけ
キャンバスアプリには、画面をPDFにするPDF関数と、ブラウザの印刷ダイアログを開くPrint関数があります。手軽ですが、帳票の出力手段としては本番に向きません。
PDF関数は試験段階(experimental)の機能です。既定では無効で、Microsoft自身が本番利用を想定していないと明記しています。- PDFはアプリを動かしている端末の上で作られるため、端末の性能に左右されます。画像やデータが多いと、アプリが落ちることもあります。
- 入れ子のギャラリーは使えません。明細の中に明細がある帳票は組めません。
- フォントによっては、日本語などラテン文字以外や太字がPDFに出ないことがあります。
Print関数は複数ページを印刷できません。モバイル端末やSharePointのフォームでも動きません。
画面のスクリーンショットを紙にする程度なら足ります。用紙サイズと改ページが決まっている帳票は、この道では出せません。
Wordテンプレートへの差し込みはプレミアム
Wordテンプレートに値を差し込むアクション(Populate a Microsoft Word template)とPDF変換は、Word Online (Business) コネクタの機能です。このコネクタは、Power Automateではプレミアム扱いです。M365のライセンスで回せるつもりで作り始め、本番展開の段階でライセンスの話が出てきます。
ヘッダーに印影やロゴを置けない
Wordテンプレートの画像差し込みは、ヘッダーの中では使えません(Microsoft公式の既知の制限)。社判やロゴを毎ページのヘッダーに置く日本の帳票では、ここでレイアウトをやり直すことになります。差し込んだ画像は縦横比を保って縮小されず、テンプレート側の枠の大きさに合わせられる点も、印影では地味に効きます。
明細は繰り返せても、繰越や頁小計は作れない
明細行は「繰り返しセクション」で可変にできます。ただしWordは文章として流れるだけなので、1ページに収まらなかったときの「次頁へ繰越」や頁ごとの小計は作れません。伝票系の帳票では、ここが一番の壁になります。
Excelはテーブル前提で、帳票の「セル」に書けない
Excel Online (Business) コネクタの行操作は、すべてExcelの「テーブル」が前提です。方眼紙レイアウトの帳票の決まったセルに値を置く、という操作はありません。やるならOffice Scriptsを書いて「スクリプトの実行」で呼ぶことになり、ここで市民開発の範囲を出ます。スクリプトの実行には、10秒に3回・1日1,600回という呼び出し上限もあります。
ファイルのロックと同時実行
コネクタが触ったExcelファイルは、最大6分ロックされることがあります。複数の実行や手作業の編集が同じファイルに重なるのも、サポート外です。テンプレートを上書きして使い回す作りにすると、申請が同時に2件来た日に壊れます。テンプレートをコピーしてから書き込む作りに直すと、今度はフローが膨らみます。
PDF変換で崩れる・止まる
Wordの「PDFに変換」は、2分以内に変換できない文書はタイムアウトします。游明朝のように私用領域の文字を使うフォントは、埋め込まれていないとPDFで正しく表示されません。機密の秘密度ラベルが付いた文書は、変換そのものができません。Excelには専用のPDF変換アクションがなく、OneDriveなどのファイル変換を経由することになりますが、印刷範囲や改ページはExcel側の設定頼みで、狙った1枚に収めるのに苦労します。
どこまでなら標準機能で足りるか
少量・定型・社内向けなら、Power AppsのPDF出力やPower AutomateのExcel / Word帳票で十分です。印影、方眼紙、B4、繰越、同時実行のどれかが要件に入った時点で、テンプレート差し込みの延長では限界が来ます。 その先の選択肢が、以下の5つです。
方法一覧
1. SSRS(SQL Server Reporting Services)
Microsoft純正の帳票エンジンで、RDLファイルでレイアウトを定義します。Dataverseとの接続はFetchXMLレポートとして行い、MDA(モデル駆動型アプリ)のレポート機能に直接統合できます。
メリット:
- Dataverseネイティブ統合(MDAの「レポートの実行」から直接呼べる)
- 追加ライセンス不要
- FetchXMLでデータ取得するため、セキュリティロールが自動適用される
デメリット:
- RDLの開発ツール(Report Builder / Visual Studio)が古く、開発体験が厳しい
- 日本語帳票特有のピクセル単位のレイアウト制御が困難
- テンプレート変更のたびにRDLファイルを再アップロードする必要がある
- 方眼紙レイアウトや複雑なセル結合は事実上不可能
2. Paginated Reports(Power BI)
SSRSのクラウド版という位置づけで、Power BIサービス上で動作します。RDLベースのレポートをPower BI上で作成・配信できます。
メリット:
- SSRSの資産(RDLファイル)をある程度流用可能
- Power BI Serviceでのスケジュール配信やサブスクリプションが使える
- Power BI Report Builderで開発(SSRSより若干モダン)
デメリット:
- Power BI Premium/PPUライセンスが必須(PPUで約2,500円/ユーザー/月)
- Dataverseへの接続にはデータゲートウェイまたはDirectQueryの設定が必要
- 日本語帳票の細かいレイアウト制御はSSRS同様に制約あり
- Dataverseのセキュリティロールとの統合が間接的
3. DocumentsCorePack(ISV製品)
Dynamics 365/Dataverse向けのサードパーティ製ドキュメント生成ツールです。Wordテンプレートにプレースホルダを埋め込み、Dataverseデータをマージして帳票を生成します。
メリット:
- Wordテンプレートベースで、業務担当者でもテンプレート編集可能
- MDAに統合されたUIで操作性が良い
- PDF出力に標準対応
- N:N関連のデータも柔軟に取得できる
デメリット:
- ライセンスコストが発生(ユーザー数に応じた課金体系)
- Wordベースのため、Excel方眼紙レイアウトの再現は不可
- 印影画像の透過合成や動的バーコード生成には追加カスタマイズが必要
- ISVへの依存(製品ロードマップは自社でコントロールできない)
4. Word/Excelテンプレート(モデル駆動型アプリ標準機能)
モデル駆動型アプリ(MDA)に標準搭載されているドキュメントテンプレート機能です。Wordテンプレートでは、Dataverseのフィールドをプレースホルダとして埋め込み、レコード画面から直接Wordファイルを生成できます。Excelテンプレートでは、ビューのデータをExcelに流し込んで出力します。設定 > テンプレート から管理します。
メリット:
- 追加ライセンス不要(Dataverse標準機能)
- MDAのレコード画面から直接出力できる(ボタン一発)
- Wordテンプレートは業務担当者でも作成・編集が可能
- 関連エンティティのデータも1:Nでテーブル出力できる
- 学習コストが低い
デメリット:
- Wordテンプレートはレイアウトの自由度が低い(Wordの書式制約に縛られる)
- Excelテンプレートはデータの流し込みのみで、帳票レイアウトの制御はできない
- 方眼紙レイアウト・セル結合・罫線の細かい制御は不可
- 印影合成やバーコード生成は不可
- 改ページ制御ができない(ページまたぎの表が崩れる)
- 画像フィールド(印影等)のテンプレート埋め込みは非対応
5. Azure Functions + openpyxl(Python自作)
Azure Functions上でPythonを動かし、openpyxlライブラリでExcelファイルを直接生成する方法です。Dataverseとの通信はS2S認証(Entra IDアプリユーザー)で行います。
メリット:
- レイアウトの自由度が最も高い(方眼紙、セル結合、印影透過、バーコードすべて対応可能)
- Excelテンプレートを業務担当者が直接編集できる
- B4/B5含む任意の用紙サイズに対応
- Dataverse FetchXMLで直接データ取得(セキュリティロールの恩恵あり)
- ランニングコストが安い(Azure Functions従量課金 or Premium共用)
デメリット:
- Python + openpyxlの開発スキルが必要
- Excelファイル生成のため、PDF変換には別途仕組みが必要
- 自前で保守する必要がある(バグ修正、バージョンアップ)
- openpyxlの仕様(insert_rowsがテーブル参照を自動更新しない等)への理解が必要
比較表
| 評価項目 | SSRS | Paginated Reports | DocumentsCorePack | Word/Excel標準 | openpyxl自作 |
|---|---|---|---|---|---|
| 日本語帳票対応 | |||||
| B4/B5用紙 | △ | △ | × | × | ◯ |
| 方眼紙レイアウト | × | × | × | × | ◯ |
| 印影透過合成 | △ | △ | △ | × | ◯ |
| 罫線の細かい制御 | △ | △ | △ | × | ◯ |
| セル結合 | △ | △ | × | × | ◯ |
| コスト | |||||
| 初期ライセンス | ◯ 無料 | × Premium必須 | △ ISVライセンス | ◯ 無料 | ◯ 開発費のみ |
| ランニングコスト | ◯ 無料 | × 月額課金 | △ 月額課金 | ◯ 無料 | ◯ AF従量課金 |
| 開発工数 | △ RDL習得 | △ RDL習得 | ◯ 低い | ◯ 最小 | × 高い |
| 運用性 | |||||
| テンプレート変更 | △ RDL再デプロイ | △ RDL再デプロイ | ◯ Word編集 | ◯ Word/Excel編集 | ◯ Excel編集 |
| Dataverse統合度 | ◯ ネイティブ | △ ゲートウェイ経由 | ◯ MDA統合 | ◯ MDAネイティブ | ◯ S2S認証 |
| PDF出力 | ◯ | ◯ | ◯ | △ Word経由 | △ 別途変換 |
| バーコード/QR | × | × | △ | × | ◯ |
どの方法を選ぶべきか
帳票要件は案件によって大きく異なります。以下のフローで判断するのが現実的です。
ステップ1: 帳票の複雑さを判定する
- 「A4に表を流し込むだけ」「宛名ラベル程度」 → シンプル帳票
- 「方眼紙レイアウト」「印影」「B4/B5」「複雑な罫線」 → 日本語重厚帳票
ステップ2: シンプル帳票の場合
- まず MDA標準のWord/Excelテンプレート を検討。追加コストゼロでレコード画面から直接出力できる
- 既存のSSRSスキルやRDL資産がある → SSRS をそのまま活用
- スケジュール配信や組織横断の帳票管理が必要 → Paginated Reports(ただしPremiumライセンスの覚悟)
- テンプレート管理を業務部門に任せたい → DocumentsCorePack
ステップ3: 日本語重厚帳票の場合
- 予算が潤沢(年間500万円以上) → SVF Cloud等の専用帳票SaaS を素直に選ぶ
- 予算は抑えたいがレイアウト要件は妥協できない → openpyxl自作
- 「方眼紙だがバーコードや印影は不要」 → DocumentsCorePackで近似レイアウトを検討する余地あり
判断のポイント: 「今の帳票をそのまま再現したい」という要件が出た時点で、標準機能では厳しくなります。その帳票が本当にそのレイアウトである必要があるのか、業務側と合意を取るのが最初の仕事です。
私たちが自作を選んだ理由と結果
私たちは複数のDataverse案件で帳票要件に向き合ってきました。結論として、Azure Functions + openpyxlによる自作の帳票エンジンを開発・運用しています。
選定理由はシンプルです。
- クライアントの帳票が方眼紙レイアウト + 印影 + B4/B5だった — 標準機能やSSRSではカバーできない要件でした
- SVF Cloud等の専用SaaSは年間500万円以上 — 中規模案件のコスト構造に合わない
- Excelテンプレートを業務担当者が管理したかった — RDLファイルの管理を情シスに押し付けたくない
実際に構築したエンジンの特徴を簡潔に挙げると:
- Excelテンプレートにプレースホルダ(Mustache風)を記述 するだけでテンプレート定義が完了
- 明細行の展開はExcelテーブル(ListObject)を使用し、テーブルスタイルが自動適用される
- 方眼紙レイアウトにはセルコメントマーカー方式で対応。結合セルのパターンを自動複製する
- 印影画像はPNG透過合成、バーコード/QRコードは動的生成に対応
- Dataverse FetchXML 1本でヘッダー + 明細を一括取得。セキュリティロールが効く
- 連票(複数レコード一括出力)はシート複製方式で、FetchXMLのIN演算子で1回のAPI呼出で全データ取得
- 実行履歴はDataverseテーブルに自動記録(いつ・誰が・どのテンプレートで出力したかを追跡可能)
ランニングコストは、Azure Functions Premium EP1(他の機能と共用)の按分で月額数千円程度。SVF Cloudの1/10以下のコストで、必要十分な帳票出力を実現できています。
もちろん万能ではありません。PDF出力には別途変換の仕組みが必要ですし、openpyxlの挙動(insert_rowsがテーブル参照を自動更新しない等)を理解した上で実装する必要があります。自前保守のコストは正直にかかります。
まとめ
Dataverseからの帳票出力は「これ一択」という正解がありません。帳票の複雑さ、予算、チームのスキルセット、運用体制によって最適解は変わります。
- まずは標準機能(Word/Excelテンプレート)から始めるのが鉄則
- SSRSやPaginated Reportsは既存資産があるなら有効
- DocumentsCorePackはテンプレート管理の手軽さが魅力
- 日本語帳票の要件が重い場合、自作か専用SaaSかの二択に絞られる
帳票出力でお困りの方、特に「既存帳票のレイアウトをDataverseで再現したいが方法が見つからない」という状況でしたら、お気軽にご相談ください。要件を聞いた上で、どの方法が現実的かを一緒に整理できます。