Power Automate Desktop Excel 列 選択

先日Power Automate Desktop(PAD)の2021年8月の更新プログラム(バージョン 2.12.171.21216)がリリースされ、Excel関連のアクション「Excel ワークシートから削除する」、「Excel ワークシート内のセルを検索して置換する」、「Excel ワークシートのアクティブなセルを取得する」、「Excel ワークシートの列名を取得する」が追加されたので、まとめて試してみました。

フロー全体

Power Automate Desktop Excel 列 選択

Excel.LaunchAndOpen Path: $'''C:\\Test\\サンプルデータ.xlsx''' Visible: True ReadOnly: False LoadAddInsAndMacros: False Instance=> ExcelInstance
Excel.ActivateWorksheetByName Instance: ExcelInstance Name: $'''MOCK_DATA'''
Excel.GetActiveCell Instance: ExcelInstance ActiveCellColumnIndex=> ActiveCellColumnIndex ActiveCellRowIndex=> ActiveCellRowIndex
Excel.GetColumnName CellColumnIndex: ActiveCellColumnIndex ColumnName=> ColumnName
Excel.ReadCell Instance: ExcelInstance StartColumn: ActiveCellColumnIndex StartRow: ActiveCellRowIndex ReadAsText: False CellValue=> ExcelData
Display.ShowMessageWithTimeout Title: $'''確認用''' Message: $'''現在選択されているセル%ColumnName%%ActiveCellRowIndex%の値は「%ExcelData%」です。''' Icon: Display.Icon.Information Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: True Timeout: 3 ButtonPressed=> ButtonPressed
# 選択中のセルの行を削除
Excel.GetFirstFreeColumnRow Instance: ExcelInstance FirstFreeColumn=> FirstFreeColumn FirstFreeRow=> FirstFreeRow
Excel.Advanced.DeleteCells Instance: ExcelInstance StartColumn: 1 StartRow: ActiveCellRowIndex EndColumn: FirstFreeColumn - 1 EndRow: ActiveCellRowIndex ShiftCellsDirection: Excel.ShiftCellsDirection.Up
# 「すべての一致」をオンにしてヒットしたセルをすべて置換
SET FindText TO $'''Alpha'''
SET ReplaceText TO $'''Beta'''
Excel.Advanced.FindAndReplaceAll Instance: ExcelInstance TextToFind: FindText TextToReplaceWith: ReplaceText MatchCase: True MatchEntireCellContents: True SearchBy: Excel.SearchOrder.Rows Cells=> Cells
LOOP FOREACH CurrentItem IN Cells
    Excel.Advanced.ActivateCell Instance: ExcelInstance Column: CurrentItem['ColumnIndex'] Row: CurrentItem['RowIndex']
    Excel.GetColumnName CellColumnIndex: CurrentItem['ColumnIndex'] ColumnName=> ColumnName2
    Display.ShowMessageWithTimeout Title: $'''置換したセルの確認''' Message: $'''セル%ColumnName2%%CurrentItem['RowIndex']%の値を置換しました。''' Icon: Display.Icon.Information Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: True Timeout: 3 ButtonPressed=> ButtonPressed2
END
Excel.CloseAndSaveAs Instance: ExcelInstance DocumentFormat: Excel.ExcelFormat.FromExtension DocumentPath: $'''C:\\Test\\サンプルデータ(2).xlsx'''
1. Excel の起動

Excelを起動してテスト用のブックを開きます。

Power Automate Desktop Excel 列 選択

2. アクティブな Excel ワークシートの設定

「MOCK_DATA」シートを選択します。

Power Automate Desktop Excel 列 選択

3. Excel ワークシートのアクティブなセルを取得する

「Excel ワークシートのアクティブなセルを取得する」アクションでアクティブセルの行番号と列番号を取得します。

Power Automate Desktop Excel 列 選択

4. Excel ワークシートの列名を取得する

「Excel ワークシートのアクティブなセルを取得する」アクションで取得した列番号を元に列名を取得します。

Power Automate Desktop Excel 列 選択

5. Excel ワークシートから読み取り

「Excel ワークシートのアクティブなセルを取得する」アクションで取得した行番号と列番号を指定してアクティブセルの値を取得します。

Power Automate Desktop Excel 列 選択

6. メッセージを表示

確認のため、取得したアクティブセルのアドレスと値をメッセージボックスで表示します。

・表示するメッセージ:

現在選択されているセル%ColumnName%%ActiveCellRowIndex%の値は「%ExcelData%」です。

Power Automate Desktop Excel 列 選択

7. Excel ワークシートから最初の空の列や行を取得

最終列を取得するため「Excel ワークシートから最初の空の列や行を取得」アクションを実行します。

Power Automate Desktop Excel 列 選択

8. Excel ワークシートから削除する

アクティブセルを行ごと削除します。

  • 取得:セル範囲の値
  • 先頭列:1
  • 先頭行:%ActiveCellRowIndex%
  • 最終列:%FirstFreeColumn – 1%
  • 最終行:%ActiveCellRowIndex%
  • 方向をシフトする:上へ

Power Automate Desktop Excel 列 選択

9. 変数の設定

検索する文字列(今回は「Alpha」)を変数「%FindText%」として設定します。

Power Automate Desktop Excel 列 選択

10. 変数の設定

置換後の文字列(今回は「Beta」)を変数「%ReplaceText%」として設定します。

Power Automate Desktop Excel 列 選択

11. Excel ワークシート内のセルを検索して置換する

指定した文字列で検索し、ヒットしたら別の文字列で置換します。
「すべての一致」をオンにすることで、ヒットしたセルすべてで置換を行い、結果を「%Cells%」(Datatable)として取得します。

  • 検索モード:検索して置換
  • すべての一致:オン
  • 検索するテキスト:%FindText%
  • 置換するテキスト:%ReplaceText%
  • 一致するサポート案件:オン ※データの大文字と小文字を区別して検索するかどうか
  • セルの内容が完全に一致する:オン ※指定したテキストと完全に一致するセルを検索するかどうか
  • 検索条件:行

Power Automate Desktop Excel 列 選択

12. For each

「Excel ワークシート内のセルを検索して置換する」アクションでヒットしたセルをFor eachで順次処理します。

Power Automate Desktop Excel 列 選択

13. Excel ワークシート内のセルをアクティブ化

行番号と列番号を指定してヒットしたセルを選択します。

  • アクティブ化:絶対値で指定したセル
  • 列:%CurrentItem[‘ColumnIndex’]%
  • 行:%CurrentItem[‘RowIndex’]%

Power Automate Desktop Excel 列 選択

14. Excel ワークシートの列名を取得する

ヒットした列番号を元に列名を取得します。

  • 列番号:%CurrentItem[‘ColumnIndex’]%

Power Automate Desktop Excel 列 選択

15. メッセージを表示

確認のため、置換したセルのアドレスをメッセージボックスで表示します。

・表示するメッセージ:

セル%ColumnName2%%CurrentItem['RowIndex']%の値を置換しました。

Power Automate Desktop Excel 列 選択

16. Excel を閉じる

Excelを閉じます。その際、別名でファイルを保存します。

Power Automate Desktop Excel 列 選択

実行画面

Power Automate Desktop Excel 列 選択

上記の通り新しく追加されたExcel関連のアクションを試してみました。
いずれのアクションも使い勝手が良く、特に「Excel ワークシート内のセルを検索して置換する」アクションは使用頻度も高いのではないかと思います。