Power Automate for desktop

[Power Automate Desktop]Excel ワークシート内のセルを検索して置換するアクション等を試してみました。

先日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 ワークシート内のセルを検索して置換する」アクションは使用頻度も高いのではないかと思います。

[Power Automate]クラウドフローとデスクトップフローとのファイル連携について前のページ

無料で学ぶPower Automate Desktop次のページ

関連記事

  1. Office関連

    PDFを分割するVBAマクロ

    「VBA PDF 分割」といったキーワード検索でのアクセスがありました…

  2. Office関連

    文字列を指定した文字数で分割するVBA関数

    "01234567890123456789012…"というような長い文…

  3. Excel

    OneNoteの指定したセクションをページごとに指定した形式で出力するマクロ

    今回はOneNoteの指定したセクションをページごとに指定した形式で出…

  4. Power Automate for desktop

    Power Automate for desktopで最強の防具を手に入れた話

    先日RPACommunityさん主催で開催された「RPA勉強会!「自動…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP