Power Automate Desktop

Power Automate DesktopでPowerPointマクロを実行する方法

Power Automate Desktop(PAD)でOfficeのマクロを実行したいとき、Excelの場合は標準で「Excel マクロの実行」アクションが用意されていますが、Excel以外のアプリケーションはマクロを実行するためのアクションが用意されていないため(2021年7月時点)、他の方法で何とかする必要があります。
今回は例として、PADからPowerPointマクロを実行する方法をご紹介します。

Officeアプリケーションのコマンドラインスイッチ

下記サイトにある通り、Officeアプリケーションには様々なコマンドラインスイッチが用意されていて、PowerPointの場合は「/M」スイッチでファイル名とマクロを指定することで、ファイルを開いた後に自動的にマクロを実行できます。

アプリケーションの実行」アクションでこのコマンドラインスイッチを指定することで、PADからマクロを実行するわけです。

「アプリケーションの実行」アクション

具体例として「C:\Test\テスト.pptm」ファイルの「SampleMacro」マクロを実行する場合は下記のようになります

Public Sub SampleMacro()
  MsgBox "開いているファイルは " & ActivePresentation.Name & " です。", vbInformation + vbSystemModal
End Sub
  • アプリケーション パス:POWERPNT.exe
  • コマンド ライン引数:/M "C:\Test\テスト.pptm" "SampleMacro"

ただし、環境によってはファイルを開いた際にマクロの警告ダイアログが表示され、そこで動作が止まってしまいます。

アドイン化したマクロを実行する

上記の通り、「アプリケーションの実行」アクションとコマンドラインスイッチでPADからPowerPointマクロを実行できましたが、フローに組み込む場合は1ファイルに埋め込まれたマクロを呼び出すよりも、任意のファイルに対して指定したマクロを実行できるようにした方が使い勝手が良さそうです。

これを実現するためにはPowerPointファイルをアドインとして保存し、事前に読み込んでおく必要があります。

  1. 実行するマクロを用意します。今回はアクティブなプレゼンテーションファイルをPDFに変換する簡単なマクロを書いてみました。
  2. Public Sub SaveAsPdf()
    'プレゼンテーションファイルと同じ場所にPDFファイルを出力
      Dim prs As PowerPoint.Presentation
      
      Set prs = ActivePresentation
      With CreateObject("Scripting.FileSystemObject")
        If .FolderExists(prs.Path) Then
          prs.ExportAsFixedFormat2 .BuildPath(prs.Path, .GetBaseName(prs.FullName) & ".pdf"), _
                                   ppFixedFormatTypePDF
        End If
      End With
      prs.Saved = True:  prs.Close '保存せずに閉じる
      Application.Quit
    End Sub
  3. 「名前を付けて保存」からファイルの種類を「PowerPoint アドイン (*.ppam)」にして保存します。ファイルの種類をアドインにした時点で保存先が自動的にAddInsフォルダに切り替わるので、そのまま保存します。
  4. 「開発」タブのアドイングループから「PowerPoint アドイン」ボタンをクリックします。
  5. 新規追加」ボタンをクリックします。
  6. 手順2.で保存したアドインファイルを選択し、「OK」ボタンをクリックします。
  7. アドインダイアログで手順5.で選択したアドインが読み込まれていることを確認し、「閉じる」ボタンをクリックします。

以上でアドインの読み込みは完了です。
読み込んだアドインのマクロは、下記のように「(アドイン名)!(マクロ名)」といった形で呼び出すことができます。

POWERPNT.exe /M "C:\Test\PowerPoint へようこそ.pptx" "SampleAddin.ppam!SaveAsPdf"

これを踏まえて作成したPADのフローが下記になります。

  • アプリケーション パス:POWERPNT.exe
  • コマンド ライン引数:/M "C:\Test\PowerPoint へようこそ.pptx" "SampleAddin.ppam!SaveAsPdf"
  • アプリケーションを起動後:アプリケーションの完了を待機

マクロの中にPowerPointを終了する処理を入れているため、「アプリケーションの完了を待機」を指定することで、マクロの終了を待ってから次の処理に移ることができるわけです。

以上のように、PADのフローにマクロを組み込むことで、例えば指定したフォルダにあるPowerPointファイルを一括でPDFに変換する処理等ができます。

もちろん、マクロを使わずにキー送信やボタンクリックでPowerPointを操作することでも同様の処理はできますが、マクロを使うことで処理は安定します。

また逆に、上で挙げたファイル変換程度であればPADを使わずにマクロだけでも簡単に処理できるわけですが、処理が複雑になればなるほどコードを書く負担は増えるので、PADに任せられる部分は任せてしまった方がコード量は少なくて済みます。

どの部分をマクロで行い、どの部分をPADに投げるかの見極めは必要になりますが、PADとOfficeマクロを組み合わせるメリットは十分にあると、個人的には思います。

Power Automate Desktopを更新するPowerShellスクリプト前のページ

Power Automate DesktopのXMLアクションを使ってみた。次のページ

関連記事

  1. Power Automate Desktop

    [Power Automate]クラウドフローとデスクトップフローとのファイル連携について

    前回の記事でクラウドフローとデスクトップフローの連携について紹介しまし…

  2. Office関連

    ディスプレイのサイズを取得するVBAマクロ

    「VBA ディスプレイ 幅 高さ」といったキーワード検索でのアクセスが…

  3. Office関連

    ガイドを追加するPowerPointマクロ

    PowerPointで図形の位置を調整するときに役立つガイド機能(ガイ…

  4. Office関連

    モヤさまのショウ君にいろいろ喋らせるVBAマクロ(2)

    前回に引き続き、HOYAサービス株式会社様が公開されている「Voice…

  5. Office関連

    SmartArtからテキストを取得するPowerPointマクロ

    Twitterで@terrysaitoさんが下記のようなツイートをされ…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

Translate

Chinese (Simplified)Chinese (Traditional)EnglishFrenchGermanJapaneseKoreanRussianSpanish

最近の記事

アーカイブ

PAGE TOP