Power Automate Desktop

[Power Automate Desktop]指定したフォルダ内のWordファイルをPDFに一括変換するフロー

Power Automate Desktop(PAD)にはExcel関連のアクションはいくつか用意されていますが、他のOfficeアプリケーション関連のアクションは無いため、基本的にはUIオートメーションやマウス・キーボードで操作することになります。

もちろん、それで処理できないことはないのですが、個人的には安定性に欠けるように思います。そこで今回は簡単なスクリプトを組み合わせてWordを操作する一例として、指定したフォルダ内のWordファイルをPDFに一括変換するフローをご紹介します。

フロー全体

# 指定したフォルダ内のWordファイルをPDFに一括変換するフロー
Folder.GetFiles Folder: $'''C:\\Test\\Word''' FileFilter: $'''*.doc*''' IncludeSubfolders: False FailOnAccessDenied: True SortBy1: Folder.SortBy.NoSort SortDescending1: False SortBy2: Folder.SortBy.NoSort SortDescending2: False SortBy3: Folder.SortBy.NoSort SortDescending3: False Files=> Files
LOOP FOREACH CurrentItem IN Files
    File.GetPathPart File: CurrentItem RootPath=> RootPath Directory=> Directory FileName=> FileName FileNameWithoutExtension=> FileNameNoExtension Extension=> FileExtension
    # スクリプト内のExportAsFixedFormatメソッドで指定可能なオプションは適宜変更
    System.RunVBScript VBScriptCode: $'''\'VBScript to convert Word document to PDF
Option Explicit

Const TargetFilePath = \"%CurrentItem%\"
Const OutputFilePath = \"%Directory%\\%FileNameNoExtension%.pdf\"
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, False, wdExportOptimizeForPrint, wdExportAllDocument, , , _
      wdExportDocumentContent, False, False, wdExportCreateWordBookmarks, True, True, False
    .Close wdDoNotSaveChanges
  End With
  .Quit
End With''' ScriptOutput=> VBScriptOutput ScriptError=> ScriptError
END
1. フォルダー内のファイルを取得

Wordファイルが保存されているフォルダーを指定します。
「ファイル フィルター」パラメーターで「*.doc*」と指定することでWordファイルのみを取得対象としています。

・フォルダー:C:\Test\Word
・ファイル フィルター:*.doc*

2. For each

For eachループで1ファイルずつ処理します。

3. ファイル パス部分の取得

変換後のPDFを元ファイルと同じ場所に出力するため、必要なフォルダパスや元ファイル名を取得します。

4. VBScript の実行

Word文書をPDFに変換するためのスクリプトを実行します。
コード内に上記フローで取得した元ファイルのパス(%CurrentItem%)と変換後のファイルのパス(%Directory%\%FileNameNoExtension%.pdf)を埋め込んでいます。

実行するVBScript:

'VBScript to convert Word document to PDF
Option Explicit

Const TargetFilePath = "%CurrentItem%"
Const OutputFilePath = "%Directory%\%FileNameNoExtension%.pdf"
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, False, wdExportOptimizeForPrint, wdExportAllDocument, , , _
      wdExportDocumentContent, False, False, wdExportCreateWordBookmarks, True, True, False
    .Close wdDoNotSaveChanges
  End With
  .Quit
End With

スクリプトの処理内容は下記の通りで、いたってシンプルなものです。

  1. Wordを起動して指定したファイルを開きます。
  2. DocumentオブジェクトのExportAsFixedFormatメソッドを使って文書をPDFとして出力します。
  3. 開いたファイルを保存せずに閉じます。
  4. Wordを終了します。

下記ページにある通りExportAsFixedFormatメソッドでは様々なオプションが指定できますので、必要に応じて変更します。

実行画面

実行画面は下図の通りです。

上記の通り、短いスクリプトを活用してWordの操作を安定して行えることが確認できました。PADからはVBScriptの他にもPowerShellやPythonスクリプトを実行できますが、Officeアプリケーションを操作する場合は、VBAに書き方が近いVBScriptがコードを書きやすいのではないかと思います。

PDF変換程度であればすべてスクリプトやマクロで書いてしまっても大した負担ではないのですが、フォルダ内のファイル取得やファイルのパス部分の取得といった汎用的な部分をPADに任せることで書くコード量を減らすことができ、将来的にPADにWordファイルの変換アクションが実装されるようなことがあれば、スクリプトで処理を行っている部分をすぐにPADのアクションに差し替えることもできます。

コードを書くのに慣れていない方にしてみれば、スクリプトを組み込むことでフローを作るハードルが高くなってしまいますし、コードが分かる方でないとフローの管理ができなくなってしまうデメリットもあるのですが、処理の安定性が増すメリットは非常に大きいので、Officeアプリケーションを操作するフローの動作が安定しないことでお悩みの方は、一度スクリプトやマクロの連携も考えてみてはいかがでしょうか。

関連記事

[Power Automate Desktop]PDFで指定したキーワードが含まれているページのみを印刷するフロー前のページ

Microsoft Edgeのバージョンに合わせてWebDriverをダウンロードするVBAマクロ次のページ

関連記事

  1. Office関連

    VBAでTTSエンジンの各種情報を列挙する

    今回はTTSエンジンの各種情報を列挙するマクロを紹介します。Mic…

  2. Office関連

    ソースコードを番号行付きのテーブルに変換するWordマクロ

    Word文書内のソースコードを、他の文書と区別して目立たせたいときに役…

  3. Office関連

    Google TTSで文字列を読み上げるマクロ

    2012/02/09 追記:関連記事・Google翻訳…

  4. Office関連

    OneNoteの指定したセクションをページごとに指定した形式で出力するマクロ

    今回はOneNoteの指定したセクションをページごとに指定した形式で出…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

Translate

Chinese (Simplified)Chinese (Traditional)EnglishFrenchGermanJapaneseKoreanRussianSpanish

最近の記事

アーカイブ

PAGE TOP