Power Automate Desktop Excel フィルター機能
現状、Excelのフィルター操作をするアクションは存在しないため、
UI操作などを利用して実現する必要があります。
手順
フィルター設定
Robin言語(コピー&ペースト用)
UI設定は削除しています。
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\Test\\Filter.xlsx''' Visible: True ReadOnly: False Instance=> ExcelInstance
Excel.SetActiveWorksheet.ActivateWorksheetByName Instance: ExcelInstance Name: $'''Sheet1'''
Excel.SelectCellsFromExcel.SelectCells Instance: ExcelInstance StartColumn: 1 StartRow: 1 EndColumn: 3 EndRow: 6
UIAutomation.Click Element: appmask['Window \'Filter.xlsx - Excel\'']['Tab Item \'データ\''] ClickType: UIAutomation.ClickType.LeftClick MousePositionRelativeToElement: UIAutomation.RectangleEdgePoint.MiddleCenter OffsetX: 0 OffsetY: 0
UIAutomation.Click Element: appmask['Window \'Filter.xlsx - Excel\'']['Button \'フィルター\''] ClickType: UIAutomation.ClickType.LeftClick MousePositionRelativeToElement: UIAutomation.RectangleEdgePoint.MiddleCenter OffsetX: 0 OffsetY: 0
フロー作成
「Excelの起動」を設置して対象のファイルを開きます。
「アクティブなExcelワークシートの設定」で対象のシートを指定します。
「Excel ワークシート内のセルを選択」でフィルター設定する範囲を指定します。
サンプルではA1~C6の範囲を指定します。
「ウィンドウのUI要素をクリックする」でメニューの中から「データ」をクリックする設定をします。
「ウィンドウのUI要素をクリックする」でフィルターをクリックする設定をします。
このフローを実行すると指定範囲にフィルターが設定されます。
フィルター条件設定
Robin言語(コピー&ペースト用)
UI設定は削除しています。
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\Test\\Filter.xlsx''' Visible: True ReadOnly: False Instance=> ExcelInstance
Excel.SetActiveWorksheet.ActivateWorksheetByName Instance: ExcelInstance Name: $'''Sheet1'''
UIAutomation.Click Element: appmask['Window \'Filter.xlsx - Excel\'']['MenuItem: フィルターが適用されないドロップダウンボタン'] ClickType: UIAutomation.ClickType.LeftClick MousePositionRelativeToElement: UIAutomation.RectangleEdgePoint.MiddleCenter OffsetX: 0 OffsetY: 0
UIAutomation.SelectMenuOption Control: appmask['Window \'Filter.xlsx - Excel\'']['MenuItem: 数値フィルター → 数値フィルター']
UIAutomation.Click Element: appmask['Window \'Filter.xlsx - Excel\'']['MenuItem: 数値フィルター → 指定の範囲内...'] ClickType: UIAutomation.ClickType.LeftClick MousePositionRelativeToElement: UIAutomation.RectangleEdgePoint.MiddleCenter OffsetX: 0 OffsetY: 0
UIAutomation.PopulateTextField TextField: appmask['Window \'Filter.xlsx - Excel\'']['Pane \'EDTBX\''] Text: 200 Mode: UIAutomation.PopulateTextMode.Replace ClickType: UIAutomation.PopulateMouseClickType.SingleClick
UIAutomation.PopulateTextField TextField: appmask['Window \'Filter.xlsx - Excel\'']['Pane \'EDTBX\' 2'] Text: 400 Mode: UIAutomation.PopulateTextMode.Replace ClickType: UIAutomation.PopulateMouseClickType.SingleClick
UIAutomation.PressButton Button: appmask['Window \'Filter.xlsx - Excel\'']['Button \'OK\'']
フロー作成
「Excelの起動」を設置して対象のファイルを開きます。
「アクティブなExcelワークシートの設定」で対象のシートを指定します。
「ウィンドウのUI要素をクリックする」で対象列のフィルターを選択します。
「ウィンドウ内のメニューオプションを選択する」で利用するフィルターを選択します。
「ウィンドウのUI要素をクリックする」で設定する条件の種類をクリックします。
「ウィンドウ内のテキスト フィールドに入力する」で条件とする値を設定します。
「ウィンドウ内のボタンを押す」でOKボタンを押します。
このフローを実行するとフィルタが実行されます。
フィルター機能を利用しない別解
Excelブック上でフィルタリングされた状態で残したいわけでなく、
特定の条件で変数として取り込む場合や、
何らかのアクションを行いたい場合は、
フィルター機能を利用しないフローの方が簡単で効率が良い場合があります。
Robin言語(コピー&ペースト用)
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\Test\\Filter.xlsx''' Visible: True ReadOnly: False Instance=> ExcelInstance
Excel.SetActiveWorksheet.ActivateWorksheetByName Instance: ExcelInstance Name: $'''Sheet1'''
Excel.GetFirstFreeColumnRow Instance: ExcelInstance FirstFreeColumn=> FirstFreeColumn FirstFreeRow=> FirstFreeRow
LOOP LoopIndex FROM 2 TO FirstFreeRow - 1 STEP 1
Excel.ReadFromExcel.ReadCell Instance: ExcelInstance StartColumn: 3 StartRow: LoopIndex ReadAsText: False CellValue=> Price
IF (200 <= Price AND Price <= 400) = $'''True''' THEN
Display.ShowMessageDialog.ShowMessage Message: Price Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed
END
END
フロー作成
「Excelの起動」を設置して対象のファイルを開きます。
「アクティブなExcelワークシートの設定」で対象のシートを指定します。
「Excel ワークシートから最初の空の列や行を取得」で最終行(%FirstFreeRow%)を取得します。
「ループ」を設置して次のように設定します。
項目名 | 設定値 | 備考 |
---|---|---|
開始値 | 2 | データの開始行 |
終了 | %FirstFreeRow - 1% | 「Excel ワークシートから最初の空の列や行を取得」の生成された変数 |
増分 | 1 |
「ループ」の中に「Excel ワークシートから読み取り」で条件とする列の値を読み取ります。
生成された変数にはPriceという名前を付けています。
項目名 | 設定値 | 備考 |
---|---|---|
Excel インスタンス | %ExcelInstance% | 「Excel の起動」の生成された変数 |
取得 | 単一セルの値 | |
先頭列 | 3 | 条件に利用する列数 |
先頭行 | %LoopIndex% | 「Loop」の生成された変数 |
「ループ」の中に「If」を設置して次のようにパラメーター設定します。
項目名 | 設定値 | 備考 |
---|---|---|
最初のオペランド | %Price% | Excel ワークシートから読み取り」の生成された変数 |
演算子 | と等しい(=) | |
2 番目のオペランド | True |
「If」の中に条件に合致する場合のアクションを設置します。
Power Automate Desktopを効率的に習得したい方へ
当サイトの情報を電子書籍用に読み易く整理したコンテンツを
買い切り950円またはKindle Unlimited (読み放題) で提供中です。
Word-A4サイズ:1,700ページの情報量で
(実際のページ数はデバイスで変わります)
基本的な使い方から各アクションの詳細な使い方、
頻出テクニック、実用例を紹介。(目次)
体系的に学びたい方は是非ご検討ください。
アップデートなどの更新事項があれば随時反映しています。(更新履歴)
なお購入後に最新版をダウンロードするには
Amazonへの問い合わせが必要です。