Power Automate Desktopを使って、複数のExcelファイルを一つのPDFファイルに変換するロボットを作成しました。
請求書など月別に書類を電子保存したい!ってときにおすすめです。
ロボット作成の難易度
レベル:初心者
作成時間:約5分
それではいってみましょう~。
ExcelからPDF変換するロボットの概要
今回作成するロボットは、Excelで作成した請求書ファイルをPDFに変換し、月ごとに1つのPDFにまとめるロボットです。
例えば、月次決算が終わった後の前月分の電子データの取りまとめなどの作業を想定しています。
確かにファイルはまとめないとウイルスのようにどんどん増殖してくもんな~。
請求書など帳票として保存期間が定められているファイルは、月ごとにまとめてフォルダ内の容量を開けておきたいですよね。
それでは早速作っていきましょう!
ExcelからPDF変換するロボットの作成手順
まずは作成手順の洗い出しです。
今回は全7工程です。
①から順番に組み立てていきましょう!
作成工程① ExcelファイルをPADに読み込む
まずは、ExcelファイルをフォルダパスごとPADに読み込みます。
PADのアクションから、「フォルダ内のファイルを取得」を選択しフローにドラッグ&ドロップで移動します。
設定と同時にパラメーターの選択画面が開くので、開きたいフォルダが格納されているパスを指定します。
同じパラメータ画面の「詳細」をクリックすると、並べ替えの基準が設定できます。並べ替えの基準は、ファイルの名前や作成日付など色々選択できます。
今回は、ファイルの名前順で降順になるように設定しています。
- 並べ替え基準:名前
- 降順:アクティブ
取得したファイル一式は、変数「Files」に格納されます。
変数「Files」の中身を確認すると、ファイルの名前順で降順に格納されています。
作成工程② PDF格納フォルダの作成
作成されるPDFデータは、元データのExcel請求書とは分けて保存したいので、別途PDF格納用のフォルダを用意します。
アクションの検索窓で「フォルダ」と検索すると、フォルダのアクション一覧が表示されます。その中から「フォルダの作成」アクションを選択し、ドラッグ&ドロップでフロー画面に追加します。
フロー画面に追加するとパラメーターの選択画面が開くので、
- 「新しいフォルダーを次の場所に作成」に保管場所のパス
- 「新しいフォルダー名」にフォルダ名
を入力します。
また、「生成された変数」名をわかりやすいように「PdfFolder」に変更しています
保存を押すと、変数「PdfFolder」が生成されます。「PdfFolder」にはPDF格納用フォルダのパスが格納されています。
作業工程③ For eachによる繰り返し処理の設定
Excel請求書ファイルを一つづつPDFに変換するため、PADにファイルの数だけ繰り返し同じ処理を行わせる必要があります。
繰り返し同じ処理を行うためにはLoopsアクションを使います。今回はLoopsアクションの中から「For each」アクションを選択しました。
「For each」を選択し、ドラッグ&ドロップでフロー画面に追加します。
設定と同時にパラメーターの選択画面が開くので、
反復処理を行う値を、「フォルダ内のファイルを取得」アクション設定時に生成された変数「Files」にします。
新たに変数「CurrentItem」が生成されます。
変数「Files」はファイルの集合体で、変数「CurrentItem」はFilesの中から取り出されたファイルが1つ格納されます。
CurrentItemは、Files内のデータの数だけ、一つづつ繰り返し処理行うための変数です。
作業工程④ ExcelをPDFに変換する(VBScriptを使用)
PDF格納フォルダの作成とFor eachを使ったループ設定が終わったら、いよいよメインイベントのExcelをPDFに変換する工程に進みます。
ExcelからPDFに変換する方法で簡単なのは、印刷設定の時にプリンターの設定をPDFにするか、
ファイル保存する際にファイルの種類を「PDF」に選択する方法でしょう。
しかし残念なことに、PADのアクションを検索したところ上記2点のアクションはどちらも存在しなかったです。
「Excelを保存する」アクションに関するMicrsoft公式ページを確認すると、ドキュメントの保存形式にPDFがなかったり、
引用画像:https://docs.microsoft.com/ja-jp/power-automate/desktop-flows/actions-reference/excel#saveexcel
「ドキュメントの印刷」に関する設定も、プリンター側で設定する必要がありそうです。
プリンター側で設定する方法だと、作業場所が変わると作成したPADのフローが使えなくなってしまうので、今回は泣く泣くVBScriptを使用してPDF変換を行います。
せっかくノーコードツール使ってんだから、なるべくコード書くような難しいやり方で作りたくないんだけどな~。今回はしょうがないね。
アクション追加を求む!
ただ、Micrsoft公式ドキュメントにVBScriptコードのサンプルがあるので、少しコードを変更するだけで一からコードを書く手間は省けそうです。
ほぼコピペで済むのか!
Microsoftの公式ドキュメントに記載されているコードは、ファイル単体でのファイル変換のやり方なので、繰り返し処理に対応できるようにコードを変更しましょう。
④-1 変数の設定
まずはPDF変換により新規作成されたファイルのパスを格納する変数を用意します。
変数のアクションから「Set variable」を選択し、「For each」と「end」の間にドラック&ドロップします。
設定と同時にパラメーターの選択画面が開くので、
- 設定(変数名):PdfFile(←Micrsoft公式ドキュメントにあわせる)
- 宛先:%PdfFolder%\%CurrentItem.NameWithoutExtension%.pdf%
と設定します。
%PdfFolder%\%CurrentItem.NameWithoutExtension%.pdf%の
%PdfFolder%は、PDF格納先のフォルダパスが格納された変数で、CurrentItem.NameWithoutExtensionは、拡張子を除いたファイル名になります。
PDFで保存するために最後に.pdfという拡張子を入力します。
④-2 VBscriptの実行設定
次に、変数のアクションから「VBscriptの実行」を選択し、「Set variable」の下にドラック&ドロップします。
パラメーターの設定画面が開くので、「実行するVBscript」に以下のコードをコピペします。
Dim Excel
Dim ExcelDoc
'Opens the Excel file'
Set Excel = CreateObject("Excel.Application")
Set ExcelDoc = Excel.Workbooks.open("%CurrentItem%")
'Creates the pdf file'
Excel.ActiveSheet.ExportAsFixedFormat 0, "%PdfFile%" ,0, 1, 0,,,0
'Closes the Excel file'
Excel.ActiveWorkbook.Close
Excel.Application.Quit
保存を押して閉じます。
ここまでで、一旦フローを実行して動作確認してみましょう。
作成工程⑤ PDFファイルをPADに読み込む
作成工程①~④まで行うと、PDF格納フォルダには、Excel請求書から変換されたPDFファイルが保存されています。
このPDFファイルをフォルダパスごとPADに読み込みます。
作成工程①と同じアクションを使うため、フローをコピペします。
コピーしたフローをダブルクリックし、パラメーターの選択画面を開きます。
- フォルダー:PDF格納フォルダのパスである変数「PdfFolder」を設定
- 並べ替え基準:「名前」を設定
- 降順:アクティブにする
- 変数の名前:最初に作成した変数「File」と区別するため「File2」に変更する
設定したら、保存を押しパラメーターの選択画面を閉じます。
ここまででフローを実行して動作確認してみましょう。
作成工程⑥ PDFファイルを結合し一つにまとめる
作成工程①~⑥を行うと、変数File2には、Excelから変換したすべてのPDFファイルがファイル名で降順に格納されています。
これを一つのPDFファイルとしてまとめるために、「PDFファイルの結合」アクションを使います。
PADのアクションから、「PDFファイルを結合」を選択しフローにドラッグ&ドロップで移動します。
パラメーターの選択画面を設定します。
- PDFファイル:%File2%
- 統合されたPDFのパス:%PdfFolder.Parent%\(ファイル名).pdf
- ファイルが存在する場合:上書き
ここまででフローを実行して動作確認してみましょう。
作成工程⑦ PDF格納フォルダを削除する
最後に、PDF格納フォルダに保存されている個別のPDFデータはもう使わないのでフォルダごと削除します。
PADのアクションから、「フォルダの削除」を選択しフローにドラッグ&ドロップで移動します。
パラメーターの選択画面を設定します。
削除するフォルダー:%PdfFolder%
以上でフローが完成です。
完成したフロー
まとめ
以上、「Power Automate Desktop・複数のExcelファイルをPDFに変換して一つにまとめるフロ」をお送りしました。
Power Automate DesktopでExcelファイルをPDF変換するアクション!ぜひお試しあれ~。