


この記事では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の基本をしっかり学習するのにオススメです。RPA界隈では有名なRPAエンジニア集団である『ロボ研』さんが監修されている解説書です。テスト用の業務Webシステム/デスクトップ業務アプリを使いながら実践形式で学習できる点が一番のメリットかなぁと思います。
▲Power Automate クラウドフローの入門書です。日本語の解説書は数少ないのでレアかと思います。変数の解説から代表的なアクションの解説がされているので初心者におすすめの本です。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。