先日Power Automate Desktop(PAD)の2021年8月の更新プログラム(バージョン 2.12.171.21216)がリリースされ、Excel関連のアクション「Excel ワークシートから削除する」、「Excel ワークシート内のセルを検索して置換する」、「Excel ワークシートのアクティブなセルを取得する」、「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を起動してテスト用のブックを開きます。
2. アクティブな Excel ワークシートの設定
「MOCK_DATA」シートを選択します。
3. Excel ワークシートのアクティブなセルを取得する
「Excel ワークシートのアクティブなセルを取得する」アクションでアクティブセルの行番号と列番号を取得します。
4. Excel ワークシートの列名を取得する
「Excel ワークシートのアクティブなセルを取得する」アクションで取得した列番号を元に列名を取得します。
5. Excel ワークシートから読み取り
「Excel ワークシートのアクティブなセルを取得する」アクションで取得した行番号と列番号を指定してアクティブセルの値を取得します。
6. メッセージを表示
確認のため、取得したアクティブセルのアドレスと値をメッセージボックスで表示します。
・表示するメッセージ:
現在選択されているセル%ColumnName%%ActiveCellRowIndex%の値は「%ExcelData%」です。
7. Excel ワークシートから最初の空の列や行を取得
最終列を取得するため「Excel ワークシートから最初の空の列や行を取得」アクションを実行します。
8. Excel ワークシートから削除する
アクティブセルを行ごと削除します。
- 取得:セル範囲の値
- 先頭列:1
- 先頭行:%ActiveCellRowIndex%
- 最終列:%FirstFreeColumn – 1%
- 最終行:%ActiveCellRowIndex%
- 方向をシフトする:上へ
9. 変数の設定
検索する文字列(今回は「Alpha」)を変数「%FindText%」として設定します。
10. 変数の設定
置換後の文字列(今回は「Beta」)を変数「%ReplaceText%」として設定します。
11. Excel ワークシート内のセルを検索して置換する
指定した文字列で検索し、ヒットしたら別の文字列で置換します。
「すべての一致」をオンにすることで、ヒットしたセルすべてで置換を行い、結果を「%Cells%」(Datatable)として取得します。
- 検索モード:検索して置換
- すべての一致:オン
- 検索するテキスト:%FindText%
- 置換するテキスト:%ReplaceText%
- 一致するサポート案件:オン ※データの大文字と小文字を区別して検索するかどうか
- セルの内容が完全に一致する:オン ※指定したテキストと完全に一致するセルを検索するかどうか
- 検索条件:行
12. For each
「Excel ワークシート内のセルを検索して置換する」アクションでヒットしたセルをFor eachで順次処理します。
13. Excel ワークシート内のセルをアクティブ化
行番号と列番号を指定してヒットしたセルを選択します。
- アクティブ化:絶対値で指定したセル
- 列:%CurrentItem[‘ColumnIndex’]%
- 行:%CurrentItem[‘RowIndex’]%
14. Excel ワークシートの列名を取得する
ヒットした列番号を元に列名を取得します。
- 列番号:%CurrentItem[‘ColumnIndex’]%
15. メッセージを表示
確認のため、置換したセルのアドレスをメッセージボックスで表示します。
・表示するメッセージ:
セル%ColumnName2%%CurrentItem['RowIndex']%の値を置換しました。
16. Excel を閉じる
Excelを閉じます。その際、別名でファイルを保存します。
実行画面
上記の通り新しく追加されたExcel関連のアクションを試してみました。
いずれのアクションも使い勝手が良く、特に「Excel ワークシート内のセルを検索して置換する」アクションは使用頻度も高いのではないかと思います。
この記事へのコメントはありません。