(またまた)久しぶりにPowerAutomateDesktopで個人的に便利～と思ったアクション「Excel ワークシートのフィルターをクリアする」

## はじめに

本記事は、「Microsoft Power Automate Advent Calendar 2024」の22日目の記事です。

https://qiita.com/advent-calendar/2024/powerautomate

Microsoft Power AutomateはDesktop版を利用、Versionは11.2412.242.0です。


## 最近あった業務上の悩み
私は業務上別のRPAツールを使っていますが、Excel関連の処理のうち気になることがありました。
現在、フィルター解除の操作をUI操作で解除しています。でも...
・なるべくUI操作をさせたくない(安定しないため)
・難しい関数やコードを使わずパパっとできる操作をしたい

アップデートできればよいのですが、顧客の環境を勝手に変更することはできません。Power Automate Desktopに良さげなアクションないかな～。

## これかな？Excel ワークシートのフィルターをクリアする
業務で必ずと言っていいほどExcelを使用していますが、ヒトも使用するファイルの場合はフィルターがかかったままの状態に...ということもあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/0ec42f4e-f109-bf90-868b-cf8d526898c0.png)
Excelインスタンス：対象のExcelファイル
フィルターのクリア：「アクティブなシート」もしくは「テーブル」を選択可能
指定した別のフィルターを除去する：指定するフィルターの解除が可能

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/e5e41980-b47c-2ef0-c09e-e84f7716ddef.png)
### フローイメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/531d5823-d981-dc6d-8813-561d6a663962.png)
※今回は、この実験のために「PowerAutomateTest」というファイルを作成しました。
【実行前】
「名前」列にフィルターがかかっているようなので解除させましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/f7d0bbc8-b920-846f-7f84-584621042af0.png)
【実行後】
「名前」列のフィルターが解除されていることを確認しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/70a9ad44-2fbd-6f51-17b7-6329a8684434.png)
UI操作を使用せずに解除できるので確かに便利！

## 【おまけ】Excelワークシート内のアクティブなセルを取得
上記の記事だけでは内容が薄いため、おまけをつけます。
このアクションは、現状のアクティブなセルの行や列の場所を取得することが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/93e20614-e478-320c-f7ba-efea6420dfd2.png)
### フローイメージ
先ほどのフィルターをクリアのアクションは無効化した状態で実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/e7397a35-28d9-f3ab-f26e-c3cc1840a928.png)

現在C2セルにいますが実行すると...
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/ed7700df-63d1-f3bf-e5de-133da6d79140.png)
結果は...
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/d4cc35a3-b664-7401-544f-06bb95091225.png)
ActiveCellColumnIndexはセルの列位置(Index)なので数字3=C列
ActiveCellRowIndexはセルの行位置(Index)なので数字2

つまり、「C2」セルの位置を取得できていますね。

### 非表示のシートがある場合
非表示のシートが存在する場合は非表示のシートを含めて見るのでしょうか。それとも表示されたものだけでしょうか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/abf756c5-56fe-4f6f-1aac-e024d90b78af.png)

【非表示の状態】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/dbb61375-53aa-7c22-c64b-ad1dd4f8fbef.png)
【Sheet2非表示後】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/c5fc6abe-c7d2-9b15-58f3-7e06fac3b406.png)

### 結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/4981a2c3-f3fd-3fff-292d-b8f751311bca.png)

ActiveCellColumnIndexはセルの列位置(Index)なので数字3=C列
ActiveCellRowIndexはセルの行位置(Index)なので数字9

ということで非表示のシートがあってもアクティブなシートのセルもC9セルにいるため、非表示のシートがあっても今いる場所のセル位置を取得するということですね。

## まとめ
ここ最近、別のRPAツールでExcelのフィルターを解除する動作をUI操作で行っています。
現在はバージョンアップをすれば該当操作は可能ですが、顧客の環境によっては勝手にバージョンアップできず、最新の機能を使用することが難しい状況です。
Excelの一部操作に関しPower Automate Desktop場合はどうなのかが気になり調べてみました。フィルター解除はユーザーに毎回通知しなくてもいいようになれば良いですね。

今後もPower Automate Desktopについても情報を追いかけていきます。
最後までお読みいただきありがとうございました。