先日書いた下記記事で、Power Automate for desktop(PAD)の「Excel の起動」アクションで単一のプロセス下で複数のブックが開けるようになったことを紹介しました。
これにより、マクロなしブック(xlsx)でもマクロが含まれるファイル(xlsm)と同時に開くことで簡単にマクロで処理を行えるようになったので具体例をご紹介します。
マクロなしブックでマクロを実行するフロー
フロー全体
実行するマクロ
実行するマクロは下記の通りで、ブック名とシート名を引数として、指定したシート上のテーブルからグラフを作成する簡単なマクロです。
Private Sub SampleMacro(ByVal BookName As String, ByVal SheetName As String) Dim ws As Excel.Worksheet On Error Resume Next Set ws = Workbooks(BookName).Worksheets(SheetName) On Error GoTo 0 If Not ws Is Nothing Then '指定したシート上のテーブルからグラフ追加 With ws.Shapes.AddChart2(-1, xlColumnClustered).Chart .SetSourceData ws.ListObjects(1).Range End With End If End Sub
このマクロを「MacroBook.xlsm」ファイルとして適当なフォルダに保存します。
1. 変数の設定
マクロが入っているファイル(MacroBook.xlsm)と処理対象となるファイル(Data.xlsx)のパスを変数として設定します。
2. ファイル パス部分の取得
マクロの実行にファイル名が必要になるので「ファイル パス部分の取得」アクションで変数(マクロファイル名:%MacroFileName%、処理対象ファイル名:%BookFileName%)として取得します。
3. Excel の起動
「Excel の起動」アクションでファイルを開きます。
このとき「詳細」から「新しい Excel プロセスの配下にネストする」オプションをオフにしておきます(マクロ用インスタンス:%MacroInstance%、処理対象インスタンス:%BookInstance%)。
4. Excel マクロの実行
処理対象インスタンス(%BookInstance%)でマクロを実行します。
マクロパラメーターでは下記のように「(ファイル名)!(マクロ名)」として実行するマクロを指定し、引数は「;」で区切って渡します。
'%MacroFileName%'!SampleMacro;%BookFileName%;Sheet1
5. Excel を閉じる
Excelを閉じます。
処理対象のファイルは「Excel を閉じる前」パラメーターで「ドキュメントを保存」を指定し、ファイルを保存しておきます。
実行画面
実行画面は下記になります。 #PAD #PA4d pic.twitter.com/lOEUbCa2ue
— きぬあさ (@kinuasa) February 2, 2022
「新しい Excel プロセスの配下にネストする」オプションのオン・オフによって、新規プロセスとしてExcelファイルを処理するかどうかを選べるようになったので、他ブックのマクロで処理を行いたい場合はオフにして単一プロセスで処理する、というように必要に応じて使い分けていくと良いでしょう。
この記事へのコメントはありません。