2025.02.20
Power Automate DesktopでWord差し込み印刷
この投稿では、Power Automate DesktopでWordの差込印刷に類似するプロセスを作成する方法を記載してみたいと思います。
Word差込印刷では、差込後の文書が1つのdocxファイルに集約して作成されるため、データソースとするExcelなどの表の各行のデータ毎に個別のファイルを作成したいという要求には適合しません。
また、すべてを差し込む必要がなく、特定の行だけを差し込みたいという場合もやや不便かと思います。
本日ご紹介するプロセスは、データソースのデータ各行に対応したWordファイルが一つずつ作成され、かつデータに出力要否の区分列を用意しておくことで、必要な行のみのWordファイルを作成するしくみとなります。
ここで、クラウドフローではなく、Desktopフローであることの背景もすこし書いておきたいと思います。
Power Automateには大きく分けてDesktopとクラウドの2種類があることはご存じかと思います。
Word 差し込み印刷と同様のプロセスをクラウドフローを使用して構築する場合、必然的にWordのコネクタを使用することになりますが、これは有償によって利用できるプレミアム扱いとなっているため、Power Automate P2などのラインセンスが別途必要になります。
こうした費用面の課題があるケースを考慮し、コストをかけず実現する方法としてPower Automate Desktopを利用する方法を紹介したいというのが今回の背景です。
前置きが長くなりましたが実際のフローのポイントを3点記載します。
・出力対象行の判定(EXCELでリストを作成している場合を想定)
①差し込みデータとして使用するExcelファイルに、差込対象行の判定をするための列をあらかじめ用意しておきます。出力の判断に使用する値(文言等)は適宜決めておきます。
②デスクトップフローを新たに作成し、「Excelの起動」アクションを追加します。
③「Excelワークシートから読み取る」アクションを追加し、引数に②で生成される変数(ExcelInstance)を指定します。
セルの列については①で用意した列の列番号(Aなら1、Zなら26、AAなら27となります)を指定します。
セルの行については1づつ増加させる変数をあらかじめ用意しておくと良いと思います。
④条件アクションの「If」を用いて、③で生成される変数(ExcelData)の値でドキュメントを出力するかどうかを判定します。
・Wordへの差し込み
①あらかじめ、差し込み様式テンプレートとなるWordドキュメントを作成し、これに任意の名前でブックマークを挿入・追加しておきます。この際のブックマーク名を、後段のアクションで使用します。
②「Wordを起動する」アクションを追加します。この際、テンプレート様式となるファイルを指定します。
③「Word文書に書き込む」アクションを追加し、引数に②で生成される変数(WordInstance)を指定します。
ポイントとして、「テキストを次に書き込む」では「ブックマークの後」を指定し、つづいて
「ブックマーク」に①で追加した際のブックマーク名を指定します。
・ループ
①元データとなるExcelには複数行が用意されているのが通常と思いますので、例としてこの表の1列目(A列)を順に上から読み進めて空欄になるまで繰り返す、とする場合は「ループ条件」アクションを使用(追加)します。
②①で追加したアクションの「最初のオペランド」は、「Excelワークシートから読み取る」アクションで生成される変数(ExcelData)を指定し、これが「空欄でない」ことを判定するため「演算子」には「と等しくない(<>)」を、また「2番目のオペランド」には「%”%」と記述します。
「”」だけ記述すると、単純に「この文字列でない」という意味になってしまいますのでこれを「%」で囲み、空欄であることを指定する必要があります。
ポイントのみ記しましたが、上記を用いれば
・必要な行のみ出力したい
・出力されるドキュメント単位は行ごとにしたい
という要求に沿った差込印刷フローを作成できます。