この記事ではExcelを読み込んだ時に生成されるDatatableを加工する方法について学習します。
Datatableを加工する方法
▲上図のようなExcelファイルがあります。Power Automate for desktopを使って表データをすべて読み込みたいのですが、電話番号列のデータからハイフンを除去する必要があります。読み込んだあとにPower Automate for desktopでハイフンを除去したいと思います。
▲「Excel」グループの中の「Excelの起動」アクションのパラメータを入力します。
- Excelの起動:「次のドキュメントを開く」を選択します。
- ドキュメントパス:Excelのファイルパスを入力します。C:\Users\user\Desktop\電話番号.xlsx
- インスタンスを表示する:Excelを開くときにバックグラウンドで表示しないようするか、表示するかを選択します。チェックをオフにするとExcelが画面上に表示されません。
- 読み取り専用として開く:書き込みを行わない場合は、読み取り専用のチェックをオンにします。図ではオフになっていますが多くの場合安全のために読み取り専用でよいかなと思います。
▲アクショングループの中の「Excel」の中の「アクティブなExcelワークシートの設定」アクションを追加します。
- Excelインスタンス:起動したExcelインスタンスを指定します。今回は「Excelの起動」アクションによってExcelを開きましたので「Excelの起動」アクションのフロー変数である「%ExcelInstance%」を指定します。
- 次とともにワークシートをアクティブ化:ワークシートをどのように指定するかを「名前」か「インデックス」のいずれかから選択します。今回は「シートの名前がわからずExcelの中の一番左側のシートを選択する」という想定のもと「インデックス」を選択します。
- ワークシートインデックス:シートのインデックス番号を指定します。インデックス番号の数え方はブックのシートは左から数えます。今回は一番左端のシートを指定したいので「1」と入力します。
▲アクショングループの中の「Excel」の中の「Excelワークシートから読み取り」アクションを追加します。
- Excelインスタンス:起動したExcelインスタンスを指定します。今回は「Excelの起動」アクションによってExcelを開きましたので「Excelの起動」アクションのフロー変数である「%ExcelInstance%」を指定します。
- 取得:ワークシートに含まれる使用可能なすべての値
▲アクショングループの中の「Excel」の中の「Excelを閉じる」アクションを追加します。
- Excelインスタンス:起動したExcelインスタンスを指定します。今回は「Excelの起動」アクションによってExcelを開きましたので「Excelの起動」アクションのフロー変数である「%ExcelInstance%」を指定します。
- Excelを閉じる前:ドキュメントを保存しない
▲「変数」グループの中の「変数の設定」アクションを追加します。
- 宛先:0
これは行番号用に使います。
▲「ループ」グループの中の「For each」を使います。
- 反復処理を行う値:%ExcelData%
- 保存先:%CurrentItem%
- 解析するテキスト:%CurrentItem[‘電話番号’]%
- 検索するテキスト:-
- 検索と置換に正規表現を使う:オフ
電話番号のハイフンを空文字(何もない文字列)と置換します。結果的にハイフンが削除されます。
▲パラメータを入力します。
- 設定:%ExcelData[NewVar][‘電話番号’]%
- 宛先:%Replaced%
「設定」を%ExcelData[NewVar][‘電話番号’]%とすることで電話番号列に、%Replaced%(ハイフン置換後の電話番号)を差し替えていきます。
- 設定:%NewVar%
- 宛先:%1+NewVar%
ループの度にNewVarの数字を1プラスします。これによって次の行次の行というように行を進めていくことができます。
▲フロー実行してExcelData変数を確認すると、電話番号からハイフンを削除することができています。
Excelに書き込む方法については後述します。
Robinソースコード
Excel.LaunchExcel.LaunchAndOpen Path: $'''C:\\Users\\user\\Desktop\\電話番号.xlsx''' Visible: True ReadOnly: False LoadAddInsAndMacros: False Instance=> ExcelInstance Excel.SetActiveWorksheet.ActivateWorksheetByIndex Instance: ExcelInstance Index: 1 Excel.ReadFromExcel.ReadAllCells Instance: ExcelInstance ReadAsText: False FirstLineIsHeader: True RangeValue=> ExcelData Excel.CloseExcel.Close Instance: ExcelInstance SET NewVar TO 0 LOOP FOREACH CurrentItem IN ExcelData Text.Replace Text: CurrentItem['電話番号'] TextToFind: $'''-''' IsRegEx: False IgnoreCase: False ReplaceWith: $'''%''%''' ActivateEscapeSequences: False Result=> Replaced SET ExcelData[NewVar]['電話番号'] TO Replaced SET NewVar TO 1 + NewVar END
▲Robinソースコードです。フローデザイナーに張り付けることでここで作成したフローをご自分のPCで再現することができます。
Datatableを書き込みには?
加工したDatatableを書き込む方法は下記の記事を参考になさってください。
▲Excelの転記方法・ループの中で1セルずつ書きこむ基本的な書きこみ方法です。
▲Excelの転記方法・Datatableを書きこむことで1アクションで複数セル同時に書き込む方法です。1セルずつ書きこむよりも高速に処理できます。(Datatableを新規作成する方法)
まとめ
この記事ではDatatableを加工する方法について学習しました。
このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
Power Automate学習教材
▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。
▲Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。
▲Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。