Power Automate for 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. Office関連

    Google スライドで新規プレゼンテーションを作成するVBAマクロ

    ここ数日PowerPointのマクロに加え、Google Apps S…

  2. Office関連

    外部アプリケーションのコンボボックスの内容を取得するVBAマクロのサンプル

    Q&Aサイトに下記質問がありました。(この質問も何となく似たような…

  3. Office関連

    格子状にガイドを追加するPowerPointマクロ

    前回の記事で、PowerPoint 2013で追加されたGuide、G…

  4. Office関連

    PowerShellからNetOfficeを使ってWordやPowerPointを操作する方法

    前回の記事関連で、WordやPowerPointもドンとこいで…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP