← 手順一覧へ戻る
Power Automate DesktopExcel

CSVをExcelに変換する(見出し・上書き確認付き)

売上CSVを新しいExcelブックへ変換するデスクトップフローです。入力なし・出力済みの分岐、見出しを残す設定、文字化けや列ずれの確認方法を具体例で説明します。

画面上の名前は、表示言語やバージョンによって異なる場合があります。Desktopの例は、フロー作成時に「Power Fx を有効にする」をオフにした標準構文です。Power Fx対応フローでは式・変数参照・インデックスの書き方が異なります。このページでは変数を %変数名% と表記します。出力変数の名前を入力する欄では、前後の % は付けません。

実行前に確認

  • これはローカルPCで手動実行する練習です。Excelの利用資格とPower Automateの利用条件を確認してください。クラウドからの起動や無人実行には別の接続・ライセンス要件があり、この例には含めません。
  • 元CSVを変更・削除する処理はありません。ただし存在確認から保存までの間に別の処理が同名ファイルを作る競合は防げません。同じ出力先への並行実行を避けてください。
  • 本例は見出し付きの3行2列を前提にしています。空ファイル・列数違いを自動検証する例ではありません。複数CSVの見出し検査と統合は関連記事161を参照してください。
  • 先頭ゼロ付きの商品コード、長い番号、日付、数式として解釈され得る文字列は、この数値サンプルと同じ扱いにしないでください。Excel側で値の解釈が変わり得るため、文字列として保持する設計と結果確認が必要です。出所不明のCSVをそのまま実行対象にしません。
  • 実データがShift-JISなどの場合は文字コードを合わせます。「システムの既定値」が元CSVと一致するとは限りません。保存途中で失敗した場合は開いたExcelの内容と出力の有無を確認し、未保存データを確かめずに閉じたり、再実行したりしないでください。

1使うアクション

  1. アクション 1ファイルが存在する場合入力sales.csvが存在しない場合
  2. アクション 2フローを停止エラーメッセージ:入力CSVがありません
  3. アクション 3End入力確認の終わり
  4. アクション 4ファイルが存在する場合出力sales.xlsxが存在する場合
  5. アクション 5フローを停止エラーメッセージ:出力先に同名ファイルがあります
  6. アクション 6End出力確認の終わり
  7. アクション 7CSV ファイルから読み取るUTF-8・カンマ・見出しをデータとして残す
  8. アクション 8Excel の起動新規ブック
  9. アクション 9Excel ワークシートに書き込むCSVTable全体をA1へ
  10. アクション 10Excel を保存する名前を付けて保存:sales.xlsx
  11. アクション 11Excel を閉じる保存済みの同じインスタンスを閉じる

表で見る入力と処理結果

架空データ

CSVの見出しもデータとして残し、3行2列を新しいExcelへまとめて書き込みます。

Desktop:Excelブック/ワークシート
入力:C:\Work\Input\sales.csv /出力:C:\Work\Output\sales.xlsx

以下は手順に沿った期待値です。実際のPower Automate・Excel環境で実行して確認した結果ではありません。セルや行の着目箇所には「●」を付けています。

入力CSVの内容

sales.csvの全3行を、カンマで区切った2列として示しています。1行目も変換対象です。
CSVの行1列目2列目
1● 商品● 金額
2ノート300
3ペン120
↓ 処理する行・列/設定

CSVは UTF-8・カンマ区切り。「最初の行に列名が含まれている」をオフにし、%CSVTable% 全体を新規ブックの A1 へ書き込みます。

読み取り後の変数

%CSVTable% は3行2列。ここだけ行・列インデックスを0から表示しています。
行インデックス列0列1
0● 商品● 金額
1ノート300
2ペン120

Excel保存後の期待値

sales.xlsxの A1:B3。見出しの文字は A1=商品・B1=金額 に入ります。
行A:商品B:金額
1● 商品● 金額
2ノート300
3ペン120
結果の見方

入力CSVを変更せず、見出しを含む A1:B3 の表を持つsales.xlsxを作成します。

  • 出力先にsales.xlsxが既にある場合、または入力CSVがない場合は、Excelを起動する前にエラーで停止する設定です。
  • 先頭行を列名として読み取る設定をオンにすると、商品・金額が通常のデータ行から外れ、この書き込み例では見出しが欠けます。
  • CSVTableの0行目はExcelの1行目に対応します。文字化け・列ずれ・セル値は保存したファイルで確認します。

図で見る処理のイメージ

概念図

見出し1行と売上2件を、入力確認から保存までつなぐ例です。

  1. 事前確認

    入力なし/出力済みならエラーで停止。両方問題なければ続行

  2. CSVを読む

    商品,金額/ノート,300/ペン,120 → 3行2列

  3. A1へ書く

    A1=商品・B1=金額。2行目以降に売上2件

  4. xlsxで保存

    新しいsales.xlsxを保存後、Excelを閉じる

  5. 再実行を確認

    同じ名前の出力があるので、2回目は変換前に停止

結果の例

正常時はA1:B3の表を作成します。入力なし・出力済みならExcelを起動せず停止します。

説明用の入力と期待結果です。実際のデスクトップフローを実行して確認した結果ではありません。

設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。

2実際の設定内容

入力する値・操作手順を確認する9ステップの設定と確認方法
  1. 1

    準備:Power Automate for desktopとWindows版Excelを利用できるPCで、従来の変数構文(%変数名%)のフローを作ります。C:\Work\Input と C:\Work\Output を先に作成し、書き込み権限を確認します。ブラウザー版Excelだけではこの例は実行できません。

  2. 2

    練習用sales.csvをUTF-8で保存します。内容は1行目「商品,金額」、2行目「ノート,300」、3行目「ペン,120」の3行です。「」はファイルへ入れず、各行の終わりで改行します。保存場所は C:\Work\Input\sales.csv。機密情報ではなく、このサンプルから試します。

  3. 3

    最初の「ファイルが存在する場合」:条件=存在しない、パス=C:\Work\Input\sales.csv。内側に「フローを停止」を置き、終了方法=エラーメッセージ付き、メッセージ=「入力CSVがありません」。Endの後に次の確認を置きます。

  4. 4

    2つ目の「ファイルが存在する場合」:条件=存在する、パス=C:\Work\Output\sales.xlsx。内側に「フローを停止」を置き、エラーメッセージ=「出力先に同名ファイルがあります」。Endの後にCSV読み取りを置きます。既存結果を確認して別名へ退避するか、確認と保存の両方の出力パスを同じ新しい名前へ変更して再実行します。

  5. 5

    「CSV ファイルから読み取る」:パス=C:\Work\Input\sales.csv、エンコード=UTF-8、区切り記号=カンマ。「最初の行に列名が含まれている」はオフにし、生成変数をCSVTableに変更します。今回は商品・金額も通常のデータとして残すため、CSVTableは3行2列になります。

  6. 6

    「Excel の起動」:空のドキュメントを作成し、生成変数をExcelInstanceにします。「Excel ワークシートに書き込む」:インスタンス=%ExcelInstance%、値=%CSVTable%、書き込み先=指定したセル、列=A、行=1。For eachは不要で、表をまとめて書き込みます。

  7. 7

    「Excel を保存する」:同じ%ExcelInstance%を指定し、名前を付けて保存、形式=Excelブック(.xlsx)、パス=C:\Work\Output\sales.xlsx。「Excel を閉じる」も同じインスタンスを指定し、既に保存しているので保存せず閉じます。

  8. 8

    期待するセル:A1=商品、B1=金額、A2=ノート、B2=300、A3=ペン、B3=120。まず正常例を確認し、2回目は同名出力の検知でExcel起動前に止まるか確認します。入力なしの確認は練習用CSVだけを別名にして行い、確認後は元の名前へ戻します。

  9. 9

    つまずきの確認:商品・金額が消えたら先頭行の列名設定、全データがA列に入ったら区切り記号、日本語が崩れたら入力ファイルの文字コードを確認します。拡張子を変えるだけでは文字コードもファイル形式も変わりません。

Microsoft公式ページで確認する

設定を確認できる公式資料