デスクワークを超絶快適にするおすすめギアたち詳しく見る

Excelの書き込み・転記・Datatableの新規作成の方法!

じょじお

この記事ではPower Automate for desktopでExcelを読み込んだ際に生成されるDatatableをExcelに書き込む方法について学習します。

ぽこがみさま

DatatableからDatatableを作る方法も学習しましょう~

目次

Power Automate for desktopのDatatableをExcelに書き込むには?

「Excelワークシートに書き込み」アクションを使う

書き込みを行うには「Excelワークシートに書き込み」アクションを使います。単一セルに書き込みを行う場合と同様です。

ダミーデータ

テスト用のダミーデータとして、下記の表をExcelに張り付けて使います。

列1社員番号名前性別生年月日電話番号携帯番号メール郵便番号住所
100001田中 戴三1989/3/903-3388-3419070-6029-5912 taizou89@example.com  132-0023東京都江戸川区西一之江4-8-1-8F
200002松野 勝司1977/7/2 090-0866-3992 ntm6048341@goo.ne.jp  604-8341京都府京都市中京区岩上町4-1-3
300003小倉 幸四郎1994/3/2018-536-4457070-5908-3506 k-ogura@goo.ne.jp018-1617秋田県南秋田郡八郎潟町イカリ8-11-6
400004宮下 秋徳1987/6/13078-408-7352 akinorimiyasita@goo.ne.jp  674-0082兵庫県明石市魚住町中尾8-6-6
ダミーデータ

C:\Users\user\Desktop\dummydata.xlsx

Datatableをそのまま別のExcelファイルに転記してみる。

じょじお

まずはExcelを読み込んで別のExcelに抽出なしで書き込んでみます。

STEP
Excelを読み込むフローを用意します。

▲こんな感じのExcelをDatatableに読み込むフローを用意しました。ここにアクションを追加していきます。フローの解説は下記の記事で解説していますのでここでは省略します。

STEP
「Excelの起動」アクションを追加します。

▲パラメータを入力します。

  • Excelの起動:次のドキュメントを開く
  • ドキュメントパス:C:\Users\user\Desktop\dump.xlsx
  • インスタンスを表示する:オン
  • 読み取り専用として開く:オン
  • 生成された変数:ExcelInstance2

「Excelの起動」アクションは元ファイルを開くときにも使用していますが、同じフローの中で「Excelの起動」アクションを複数使うときはExcelインスタンス変数の名前を変えた方が良いかと思います。

STEP
「Excelワークシートに書き込み」アクションを追加します。

▲パラメータを入力します。

  • Excelインスタンス:%ExcelInstance2%
  • 書き込む値:%ExcelData%
  • 書き込みモード:指定したセル上
  • 列:1
  • 行:1

書き込む値はExcelを読み込んだ時に生成されるDatatable型変数を渡します。

DatatableをExcelに書き込むときは開始セルだけを渡すとそこを起点にして書き込んでくれます。

「列」のパラメータは数字アルファベットを使用することができます。

STEP
フローが完成しました。

▲フローが完成しました。

STEP
フローを実行します。

▲書き込むことができました。

元のExcelファイルと書き込んだExcelファイルで若干データ型の違いによる差異が生じました。例えば社員番号「00001」が「1」になってしまったり、日付データ「1987/6/13」が「1987/6/13 0:00:00」になっていたり。この点については、Excelファイルにあらかじめ表示形式の設定をしておくとか、PADで加工するとか要件によって工夫が必要かと思います。この記事ではこの点については無視したいと思います。

運用の際はExcelは開いたら閉じる処理・保存する処理を入れましょう。

Robinソースコード

Excel.LaunchExcel.LaunchAndOpen Path: $'''C:\\Users\\user\\Desktop\\dummydata.xlsx''' Visible: False ReadOnly: True LoadAddInsAndMacros: False Instance=> ExcelInstance
Excel.SetActiveWorksheet.ActivateWorksheetByIndex Instance: ExcelInstance Index: 1
Excel.GetFirstFreeRowOnColumn Instance: ExcelInstance Column: $'''B''' FirstFreeRowOnColumn=> FirstFreeRowOnColumn
Excel.ReadFromExcel.ReadCells Instance: ExcelInstance StartColumn: 1 StartRow: 1 EndColumn: $'''J''' EndRow: FirstFreeRowOnColumn - 1 ReadAsText: False FirstLineIsHeader: True RangeValue=> ExcelData
Excel.CloseExcel.Close Instance: ExcelInstance
Excel.LaunchExcel.LaunchAndOpen Path: $'''C:\\Users\\user\\Desktop\\dump.xlsx''' Visible: True ReadOnly: True LoadAddInsAndMacros: False Instance=> ExcelInstance2
Excel.WriteToExcel.WriteCell Instance: ExcelInstance2 Value: ExcelData Column: 1 Row: 1

▲フローデザイナーにコピペするとここで作成したフローを再現できます。

列を抽出して小さいDatatableを作成してそのDatatableを書き込む。

じょじお

Excelを読み込んでからDatatableを作り変えてから書き込んでみます。

じょじお

「名前」列と「メール」列だけを抽出して新しくデータテーブルを作ります。それを別のExcelファイルに書き込んでみます。

STEP
Excelを読み込むフローを用意します。

▲こんな感じのExcelをDatatableに読み込むフローを用意しました。ここにアクションを追加していきます。フローの解説は下記の記事で解説していますのでここでは省略します。

STEP
「新しいリストの作成」アクションを追加します。
  • 生成された変数:%List%

このリスト型変数は、ループの中で各行の「名前」「メール」の値を格納するために使用します。

STEP
「変数の設定」アクションを追加します。
  • 設定:%myDataTable%
  • 宛先:%{ ^[“name”, “mail”] }%
Datatableの作り方

Datatableの作り方

変数の設定」アクションに、%{ リスト}%と記述するとDatatableが作成できます。

変数の設定」アクションに、%{ ^リスト}%と記述するとリストを列名にした空っぽのDatatableが作成できます。

^(ハット)記号をリストの前に付けると列名として認識され、^(ハット)記号を付けない場合はデータとして認識されます。言葉で伝えづらいので実際に「変数の設定」アクションを実行しながら解説します。

列名を付けない場合

%{ ['名前', 'メール'] }%と入力した場合、1行2列のDatatableが作成されます。データが1行だけ格納されたDatatableです。列名はColumn1のように自動的に割り振られます。

%{ ^['名前', 'メール'] }%と入力した場合、0行2列のDatatableが作成されます。列名が設定された空っぽのDatatableです。

%{ ^['名前', 'メール'], ['山田太郎', 't-yamada@hoge.com'] }%と入力した場合、1行2列のDatatableが作成されます。

STEP
「For each」アクションを追加します。
  • 反復処理を行う値:%ExcelData%
  • 保存先:%CurrentItem%
STEP
(ループの中の処理)「項目をリストに追加」アクションを追加します。(「名前」列)
  • 項目の追加:%CurrentItem[‘名前’]%
  • 追加先リスト:%List%
STEP
(ループの中の処理)「項目をリストに追加」アクションを追加します。(「メール」列)
  • 項目の追加:%CurrentItem[‘メール’]%
  • 追加先リスト:%List%
STEP
(ループの中の処理)「変数の設定」アクションを追加します。
  • 設定:%myDataTable%
  • 宛先:%myDataTable + List%

Datatableに+演算子でリストを足し算すると、Datatableに行を追加することができます。UIPathとかデータベースにおけるマージです。

%Datatable + リスト% と記述するとDatatableに行が追加されます。

STEP
(ループの中の処理)「リストのクリア」アクションを追加します。
  • クリアするリスト:%List%

リストをループが終わるたびに空っぽにします。

STEP
「Excelの起動」アクションを追加します。

▲書き込む用のExcelを起動します。

STEP
「Excelワークシートに書き込み」アクションを追加します。

▲Excelに作成したDatatableを書き込みます。

STEP
フローが完成しました。

▲フローが完成しました。

STEP
フローを実行します。

▲名前列とメール列だけを抽出してExcelファイルに書き込むことができました。

myDatatable

▲作成したDatatableはこんな感じ。

運用の際はExcelを閉じる処理・保存する処理を入れましょう。

Robinソースコード

Excel.LaunchExcel.LaunchAndOpen Path: $'''C:\\Users\\user\\Desktop\\dummydata.xlsx''' Visible: False ReadOnly: True LoadAddInsAndMacros: False Instance=> ExcelInstance
Excel.SetActiveWorksheet.ActivateWorksheetByIndex Instance: ExcelInstance Index: 1
Excel.GetFirstFreeRowOnColumn Instance: ExcelInstance Column: $'''B''' FirstFreeRowOnColumn=> FirstFreeRowOnColumn
Excel.ReadFromExcel.ReadCells Instance: ExcelInstance StartColumn: 1 StartRow: 1 EndColumn: $'''J''' EndRow: FirstFreeRowOnColumn - 1 ReadAsText: False FirstLineIsHeader: True RangeValue=> ExcelData
Excel.CloseExcel.Close Instance: ExcelInstance
Variables.CreateNewList List=> List
SET myDataTable TO { ^['name', 'mail'] }
LOOP FOREACH CurrentItem IN ExcelData
    Variables.AddItemToList Item: CurrentItem['名前'] List: List NewList=> List
    Variables.AddItemToList Item: CurrentItem['メール'] List: List NewList=> List
    SET myDataTable TO myDataTable + List
    Variables.ClearList List: List ClearedList=> List
END
Excel.LaunchExcel.LaunchAndOpen Path: $'''C:\\Users\\user\\Desktop\\dump.xlsx''' Visible: True ReadOnly: True LoadAddInsAndMacros: False Instance=> ExcelInstance2
Excel.WriteToExcel.WriteCell Instance: ExcelInstance2 Value: myDataTable Column: 1 Row: 1

▲フローデザイナーにコピペするとここで作成したフローを再現できます。

まとめ

じょじお

以上、この記事ではDataTable型変数を作成する方法とExcelに書き込む方法について学習しました。

ぽこがみさま

このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!

Power Automate学習教材

Power AutomateをKindleで学びたい方はコチラ

▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。

Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。

Power Automate クラウドフローの入門書です。日本語の解説書は数少ないのでレアかと思います。変数の解説から代表的なアクションの解説がされているので初心者におすすめの本です。

Microsoft 365/ Power Automate / Power Platform / Google Apps Script…

Power Automateを動画で学びたい方はコチラ

▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。

この記事が気に入ったら
フォローしてね!

シェアしてくれたらウレシイ(·:゚д゚:·)
  • URLをコピーしました!
  • URLをコピーしました!
目次
閉じる