Power Automate Desktopで複数CSVをExcelへ統合

Power Automate Desktopで複数CSVをExcelへ統合

拠点ごとの販売管理システムやPOSレジが吐き出す日次のCSVを、共有フォルダから1件ずつ開いてExcelにまとめて貼り付ける。

月末になるとこの作業だけで半日つぶれる、という相談をよく受けます。

メールに添付されて届く1件のCSVを取り込む場合は、Power Automateのクラウドフローで十分です。

一方、拠点別・システム別に日々増えていく複数のCSVを、ローカルの共有フォルダから一括で読み込んで1つのExcelへ集約する場合もあります。

この場合に向いているのは、デスクトップ上のファイル操作が得意なPower Automate Desktopです。

ここでは、フォルダ内の複数CSVを取得し、繰り返し読み込みながら1つのExcelへ追記していく手順を整理します。

あわせて、文字コード・列ずれで実際につまずきやすいポイントもまとめています。

複数CSVの統合作業を無料で相談する

どんなときに使うか

複数のCSVを1つのExcelへ統合する作業が発生するのは、たいてい発生源が複数あるケースです。

拠点ごとに同じフォーマットのCSVを出力している、あるいは販売管理システムと会計システムのように別々のシステムがそれぞれCSVを吐き出している、といった状況です。

月次や週次の集計前に、これらを1つのシートへまとめる必要が出てきます。

クラウドフローとデスクトップフローのどちらが向くかは、CSVの受け取り方によって変わります。

受け取り方

向くフロー

理由

メールに添付されて1件ずつ届く

Power Automateのクラウドフロー

Outlookコネクタでトリガーでき、ファイル操作の待ち時間が発生しない

共有フォルダやローカルフォルダに複数ファイルがまとめて置かれる

Power Automate Desktop

フォルダ内の全ファイル取得やExcelの直接操作に強く、無人実行にも対応できる

拠点数やシステム数が増えるほど、1つのExcelにまとめてから初めて全体の傾向が見える、という状態になりがちです。

統合先のExcelは、あらかじめ列見出しをそろえたテーブルとして用意しておくと、後続の書き込み処理が安定するはずです。

手順(フォルダ内の複数CSVを1つのExcelへ統合する)

ここでは、共有フォルダに集まった複数のCSVファイルを1つずつ読み込み、統合先のExcelファイルへ順番に追記していく流れを組みます。

ファイル数が多い場合、途中でエラーが起きるとどこまで書き込み済みかわかりにくくなります。

まず数件だけのテストフォルダで最後まで通してから、対象を本番フォルダへ広げると手戻りが少ないはずです。

Step1. フォルダ内のCSVファイルを取得する

『フォルダー内のファイルを取得』アクションで対象フォルダを指定し、ファイルフィルターを*.csvにして、CSVファイルだけを一覧として取得します。

取得した結果はFilesという変数にリストとして格納され、後続のループでこのリストを1件ずつ処理する形です。

サブフォルダも対象にしたい場合は、このアクションのサブフォルダーを含めるオプションを有効にしておく必要があります。

Step2. Excelを起動し書き込み先を準備する

『Excelの起動』アクションで、統合先となるExcelファイルを開きます。

このとき使う統合先のファイルには、あらかじめ列見出しだけを設定したシートを用意しておく形です。

続けて『Excelワークシートから最初の空の列や行を取得』アクションを一度実行し、書き込みを開始する行番号を変数として取得しておきます。

Step3. CSVファイルを繰り返し読み込んで追記する

Step1で取得したFilesを対象に『For each』アクションでループを組みます。

ループの中では、まず『CSVファイルから読み取る』アクションで現在処理中のCSVファイルを読み込み、内容をデータテーブルの変数として受け取る形です。

このとき『最初の行に列名が含まれています』オプションをオンにしておくと、各CSVの見出し行がデータとして取り込まれなくなり、統合先のExcelにファイルの数だけ見出し行が混ざる事故を防げます。

文字コードはこのアクションのエンコードのオプションで指定しますが、選択肢にShift_JISという名前はなく、日本語版WindowsのShift_JISのCSVには『システムの既定値』を選ぶ形です。

UTF-8のCSVはそのまま『UTF-8』を選び、区切り文字もあわせて送信元のシステムに合わせて設定します。

読み込んだデータテーブルを『Excelワークシートに書き込む』アクションでStep2の空き行から書き込み、書き込んだ行数の分だけ次の開始行を進めます。

Step4. 保存して閉じる

全ファイルのループが終わったら、『Excelの保存』アクションで統合先のExcelファイルを上書き保存し、『Excelを閉じる』アクションでファイルを閉じる流れです。

処理済みのCSVを本番の共有フォルダへ再度置いてしまうと二重に取り込まれるため、読み込み終えたファイルを別の完了フォルダへ移動する処理を、Step3のループの最後に組み込んでおくと安全に運用できます。

複数CSVをExcelへ統合する設定手順の4ステップ。CSVファイルを取得→Excelを起動して準備→CSVを繰り返し読み込み→保存してExcelを閉じる

文字コードと列ずれのつまずき

複数のCSVを1つのExcelへ統合する作業で実際につまずくのは、ほとんどが文字コードと列構成の不一致です。

起きやすい状況と対応の考え方を整理すると、次のようになります。

つまずきの種類

起きやすい状況

対応の考え方

文字コードの不一致

拠点Aは古いPOSレジがShift_JISで出力し、拠点Bは新しいクラウド系システムがUTF-8で出力する

拠点・システムごとに文字コードを一覧化しておき、Step3の読み取りアクションで拠点別に切り替える

列の並び順のずれ

システムのバージョンアップで列が1本増えた、あるいは拠点ごとに列の順序が微妙に異なる

ヘッダー行の内容を照合してから書き込む処理を挟み、位置ではなく列名で対応させる

列数そのものの不一致

一部の拠点だけ備考欄が省略されている

統合先のテーブル側にあらかじめ全列を用意し、存在しない列は空欄として書き込む

これらは一度パターンを洗い出してしまえば、拠点・システムの組み合わせごとに条件分岐で機械的に処理できます。

ただし新しい拠点が増えるたびに見慣れない組み合わせが出てくることもあるため、想定外の列数やヘッダー名でループが止まった場合に、担当者へメールで通知する仕組みも合わせて用意しておくと安心です。

数百件を超えるファイルを一括で処理する場合は、ループの実行に時間がかかる点にも注意が必要です。

実行中はPCの画面をほかの作業に使いにくいため、業務時間外や昼休みにまとめて動かす運用にするか、無人実行に対応した有償プランへの切り替えを検討する必要があります。

似た仕組みは、メールで届く1件のCSVをExcelへ取り込む場面にも応用できます。

Excelのリストを別のWebシステムへ一括入力したい場合は、こちらの手順も参考になります。


複数CSVの統合作業について相談してみませんか?

「拠点ごとにCSVの形式が違って毎回手直しが発生する」「文字化けや列ずれの原因がその場でわからない」「毎月の集計前の転記作業から抜け出したい」

少しでもお心当たりがあれば、お気軽にご相談ください。

現在、Power Automate Desktopの業務自動化に関するお悩みをお伺いする 無料の個別相談 を実施しています。

よくある質問

Q. 拠点数が多い場合、フォルダ構成はどうすればいいですか?

拠点ごとにサブフォルダを分けて、Step1のフォルダ内ファイル取得でサブフォルダを含める設定にしておくと管理しやすくなります。

拠点名をサブフォルダ名やファイル名に含めておけば、統合後のExcelに拠点列を追加できるため、どのファイル由来のデータかを後から追跡しやすいはずです。

Q. CSVファイルから読み取るアクションで文字コードを指定できないケースはありますか?

一部の古いシステムが独自の文字コードで出力している場合、標準の選択肢に該当するものがなく読み取り時に文字化けすることがあります。

その場合は、『PowerShellスクリプトの実行』アクションなどで、読み取る前にファイル自体をUTF-8へ変換しておく必要があります。

Q. 統合先のExcelファイルが大きくなりすぎた場合はどうすればいいですか?

数万行を超えるような規模になると、Excelへの書き込みだけで実行時間がかなり長くなります。

月ごとにファイルを分ける、あるいはExcelではなくデータベースへの書き込みに切り替えるといった見直しを検討する必要があります。