先日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 ワークシートから削除するアクティブセルを行ごと削除します。
9. 変数の設定検索する文字列(今回は「Alpha」)を変数「%FindText%」として設定します。 10. 変数の設定置換後の文字列(今回は「Beta」)を変数「%ReplaceText%」として設定します。 11. Excel ワークシート内のセルを検索して置換する指定した文字列で検索し、ヒットしたら別の文字列で置換します。
12. For each「Excel ワークシート内のセルを検索して置換する」アクションでヒットしたセルをFor eachで順次処理します。 13. Excel ワークシート内のセルをアクティブ化行番号と列番号を指定してヒットしたセルを選択します。
14. Excel ワークシートの列名を取得するヒットした列番号を元に列名を取得します。
15. メッセージを表示確認のため、置換したセルのアドレスをメッセージボックスで表示します。 ・表示するメッセージ: セル%ColumnName2%%CurrentItem['RowIndex']%の値を置換しました。 16. Excel を閉じるExcelを閉じます。その際、別名でファイルを保存します。 実行画面上記の通り新しく追加されたExcel関連のアクションを試してみました。 |