Power Automate for desktop

たった1行でPower Automate for desktop(PAD)から自由自在にExcelを操作できるスクリプトの紹介

※ 本記事は「RPA(ロボティック・プロセス・オートメーション) Advent Calendar 2022」23日目(カレンダー2)の記事となります。


12月23日、RPACommunity主催で「【自動化やIT活用ネタ】ライトニングトーク大会 X’masスペシャル!」が開催されました。

クリスマススペシャルということで非常に豪華な登壇者陣のなか、僭越ながら私も末席に名を連ねることになりました。

ただ、諸事情によりリアルタイムでの参加が難しくなってしまったため、事前収録した動画を当日流していただく形での参加となっています。

今回の記事のタイトルでLTを行いましたが、時間が限られており、内容をカットした部分もあるため、以下で内容を補足させていただきます。

LT資料

LTで使用した資料は下記にアップしていますので、まずはこちらをご参照ください。

PADに用意されている標準のExcel関連のアクション

PADには標準でExcelを操作するためのアクションが多数用意されており、ある程度の処理はできるようになっています。

ただし、これら標準のアクションだけでは足りない部分もあり、“例えば選択したセル範囲の内容をクリアする”といった処理も、セル選択まではできるのですが、肝心のクリア処理のアクションは用意されていません。

そのため、通常であれば下記動画のようにマウスやキーボード操作によって処理を行うことになるのですが、どうしても安定性に欠けてしまいます。

Excelのコマンドを実行するためのスクリプト

そこでオススメするのがスクリプトによってExcelのコマンドを実行する方法です。
PADにはスクリプトを実行するためのアクションが標準で用意されており、例えば「VBScript の実行」アクションで下記スクリプトを実行すると、起動中のExcelで『すべてクリア』コマンドを実行することができます。

GetObject(, "Excel.Application").CommandBars.ExecuteMso "ClearAll"

上記スクリプトでは、

  1. 起動中のExcelを取得(GetObject(, “Excel.Application”))
  2. IDで指定したコマンド(『すべてクリア』コマンドのID:ClearAll)を実行(CommandBars.ExecuteMsoメソッド)

といった処理をたった1行のコードで行っています。
ただし、Excelが複数起動した状態では、対象となるExcelでコマンドが実行されるかどうかは不確実であるため、その場合は下記コードのようにExcelファイルのパスを指定することで安定して処理を行うことができます。

GetObject("C:\Test\SampleBook.xlsx").Application.CommandBars.ExecuteMso "ClearAll"

※上記コードではGetObject関数の第1引数でファイルパスを指定することでWorkbookオブジェクトを取得し、Applicationプロパティから取得したExcel.Applicationオブジェクト経由でコマンドを実行しています。

コマンドIDの取得方法

ExecuteMsoメソッドで指定するコマンドID(コントロールID)を取得する最も簡単な方法は“クイック アクセス ツール バーのカスタマイズ画面でポップアップヒントを見る”ことです。

ただしIDを手入力することになるので、Microsoftが公開しているリスト(Excelファイル)からコピーした方が確実です。

クイック アクセス ツール バーのカスタマイズと上記リスト、両方を参照することをオススメします。

上記の通り、今回の記事ではIDを指定して任意のExcelのコマンドを実行するスクリプトを紹介しました。

VBAやVBScriptに詳しい人であれば、すべての処理をマクロやスクリプトで書くことも容易ですが、ローコードサービスであるPADの特性を活かすことを考えるのであれば、標準で用意されていない部分のみをスクリプトで処理することによって、将来的にその処理がアクションとして実装された際、簡単に処理を置き換えられるメリットがあります。

標準機能とスクリプトを上手く組み合わせることで、可読性が高く安定したフローを作れるようになるかと思います。

【ポケモンSV】パルデア図鑑が完成しました。前のページ

2022年12月の人気記事次のページ

関連記事

  1. Office関連

    SendKeysでWindowsキーを送信するVBAマクロ

    「VBA SendKeys Windowsキー」といったキーワード検索…

  2. Office関連

    Excel 2016 Previewで追加された新しい関数

    ※ 下記情報はOffice 2016 Preview版を元にしています…

  3. Office関連

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

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

  4. Excel

    プロダクトIDを取得するWordマクロ

    下記質問用に書いたコードです。「バージョン情報」で表示されるプロダ…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

Translate

Chinese (Simplified)Chinese (Traditional)EnglishFrenchGermanJapaneseKoreanRussianSpanish

最近の記事

アーカイブ

PAGE TOP