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. Excel

    Evernote Cloud SDKを使って特定の文字列が含まれるノートを検索するVBAマクロ

    前回の記事で、VBAからEvernote Cloud SDKを使ってノ…

  2. Power Automate for desktop

    Power Automate DesktopでPPAPしてみた。

    PPAP、所謂パスワード付きZipをメールに添付して、そのメールとは別…

  3. Office関連

    Trello APIを使ってカードを投稿するVBAマクロ

    以前Fiddlerを使ってTrello APIを実行する記事を書きまし…

  4. Office関連

    Officeファイルから作成者などのプロパティを取得するVBScript

    下記記事でも書いていますが、xlsxやdocxといった、OOXML形式…

  5. Office関連

    Google Calendar APIを使って日本の祝日を取得するVBAマクロ

    祝日の一覧を用意する必要があったので、Google Calendar …

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP