※本記事は@otoan_uさんの記事に続く「RPA Community Advent Calendar 2021」11日目の記事となります。
※ 本記事は2021年12月時点での情報を元にしています。今後のアップデートにより仕様が変更される可能性がある点はご注意ください。
先月オンラインで開催された「Power Automate Desktop勉強会 vol.4」で本記事と同タイトルでLTさせていただいたので今回はその補足的な説明をしていきます。
(RPACommunityではなくPADjpコミュニティの話となってしまいますが、一応RPA関連ということで)
LT概要
Power Automate for desktop(PAD)では、標準のアクションとして用意されていないアプリケーションを操作する際、多くの場合はマウス操作やキー送信、UI オートメーションを使うことになりますが、Word文書をPDFに変換するフローを例に、安定してフローを実行するための一つの方法として「コマンドラインオプション」を利用する方法があることをご紹介しました。
勉強会の動画
勉強会の動画がYouTubeにアップされていますので、LTがどのような内容だったのかは下記動画をご視聴ください。
WordファイルをPDFに変換するフロー(UI操作)
PADにはExcelやOutlookを操作するためのアクションは用意されていますが、それ以外のOfficeアプリケーション用のアクションは用意されておらず、例えばWordでファイルを開いてPDFに変換する処理を自動化する場合は下図のようなフローになります。
上記フローでは下記のような操作を行っています。
- Wordを起動する。
- 「ファイル」タブをクリックし、「開く」ボタンをクリックする。
- 「参照」ボタンをクリックし、ファイル選択ダイアログで対象ファイルのパスを指定してファイルを開く。
- Wordファイルが開かれたら「ファイル」タブをクリックし、「エクスポート」ボタンをクリックする。
- 「PDF/XPS の作成」ボタンをクリックし、ファイル選択ダイアログでPDFの出力先を指定する。
- 「発行」ボタンをクリックしてPDFを出力する。
- 作成されたPDFを表示する。
手作業での処理をそのままフローに置き換えた形で、UIの操作を行っているためアクション数も多く安定性にはやや欠けます。
WordファイルをPDFに変換するフロー(スクリプト)
一方、PADにはスクリプトを実行するアクションが用意されているため、“WordファイルをPDFに変換するスクリプト”を組み込むこともできます。
'※ WordファイルをPDFファイルに変換するスクリプト '※ PDF出力後にファイルを開く Option Explicit Const TargetFilePath = "%WordFilePath%" Const OutputFilePath = "%PDFFilePath%" Const wdExportFormatPDF = 17 Const wdExportOptimizeForPrint = 0 Const wdExportAllDocument = 0 Const wdExportDocumentContent = 0 Const wdExportCreateWordBookmarks = 2 Const wdDoNotSaveChanges = 0 With CreateObject("Word.Application") .Visible = True With .Documents.Open(TargetFilePath) .ExportAsFixedFormat OutputFilePath, wdExportFormatPDF, True, wdExportOptimizeForPrint, wdExportAllDocument, , , _ wdExportDocumentContent, False, False, wdExportCreateWordBookmarks, True, True, False .Close wdDoNotSaveChanges End With .Quit End With
UI操作に比べて非常にシンプルで、Wordの操作をスクリプトで行っているため安定性も高くなっていますが、プログラミングの知識が必須となるため作成・管理できる人材が限定されるといった、保守・運用・管理面では課題があると言えるでしょう。
WordファイルをPDFに変換するフロー(コマンドラインオプション)
そこで、スクリプトを組まなくてもUI操作よりも安定して処理を行うための一つの方法として「コマンドラインオプション」(コマンドライン引数、コマンドラインスイッチ)をご紹介します。
コマンドラインオプションを指定してアプリケーションを実行することで様々な処理を行うことができ、PADでは「アプリケーションの実行」アクションの「コマンド ライン引数」で設定できます。
どのようなオプションが用意されているかは対象となるアプリケーション次第ですが、Wordを含めたOffice製品のオプションは下記サイトでまとめられています。
中でもWordで指定したマクロを実行するための「/mmacroname」オプションは優れもので、標準で備わっている「コマンドマクロ」も実行することができます。
どのようなコマンドマクロがあるのかはマクロダイアログから確認できますが、私の方で一覧としてまとめてみました。
すべてのコマンドマクロが「/mmacroname」オプションで実行できるわけではありませんが、ファイルをPDF形式で出力するための「DocExport」コマンドは実行可能です。
下図のようにWord(WINWORD.exe)に「/mmacroname」オプションと対象ファイルのパスを指定することで、ファイルを開くと同時にPDFの出力先を指定するダイアログが表示されるので、UI操作に比べて必要な処理数が少なくなります。
以上のように、アプリケーションによってはスクリプトを書かなくても動作が不安定になりがちなUI操作を最小限に留めることができますので、PADを使われている方は「コマンドラインオプション」の活用を検討されてはいかがでしょうか。
関連記事
今回の記事はこれで終了です。
RPA Community Advent Calendar 2021、12日目の記事は@hannarirpaさんの下記記事になります。
この記事へのコメントはありません。