【PowerAutomate】CSVファイルを読み込み行単位でExcelファイルに書き込むサンプル

Power Automate Desktop

CSVファイルを読み込みExcelファイルに出力するサンプルです。全体をコピペするイメージではなく行毎に書き込みを行います。

※下記記事はCSVファイル全体をコピペするイメージです。

【PowerAutomate】CSVファイルをExcelファイルに書き込む
PowerAutomateDesktopでCSVファイルを読み込みExcelファイルに出力するサンプルです。

全体概要

下記の内容でロジックを作成します。

  1. CSVファイルの存在チェックを行う
  2. CSVファイルを読み込む
  3. Excelファイルを新規作成する
  4. CSVファイルのヘッダ情報をExcelに書き込む
  5. CSVファイルのデータをExcelファイルに書き込む
  6. Excelファイルを保存する

※下記アクションをコピペすることでフローを作成できます。

# C:\PowerAutomate\都道府県.txtが存在する場合はファイルを読み込みExcelに出力する。
SET RootDir TO $'''C:\\PowerAutomate'''
SET TagetFile TO $'''都道府県'''
SET SystemName TO $'''CSV読み込み'''
IF (File.IfFile.DoesNotExist File: $'''%RootDir%\\%TagetFile%.txt''') THEN
    Display.ShowMessageDialog.ShowMessage Title: SystemName Message: $'''%RootDir%\\%TagetFile%.txtが存在しません。''' Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed
    EXIT Code: 0
END
File.ReadFromCSVFile.ReadCSV CSVFile: $'''%RootDir%\\%TagetFile%.txt''' Encoding: File.CSVEncoding.UTF8 TrimFields: True FirstLineContainsColumnNames: True ColumnsSeparator: File.CSVColumnsSeparator.SystemDefault CSVTable=> TodofukenList
Excel.LaunchExcel.LaunchUnderExistingProcess Visible: False Instance=> ExcelInstance
SET ColList TO TodofukenList.Columns
SET ColNo TO 1
LOOP FOREACH CurrentItem2 IN ColList
    Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: CurrentItem2 Column: ColNo Row: 1
    Variables.IncreaseVariable Value: ColNo IncrementValue: 1
END
SET RowNo TO 2
LOOP FOREACH CurrentItem IN TodofukenList
    Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: CurrentItem['No'] Column: $'''A''' Row: RowNo
    Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: CurrentItem['都道府県名'] Column: $'''B''' Row: RowNo
    Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: CurrentItem['地域区分'] Column: $'''C''' Row: RowNo
    Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: CurrentItem['人口'] Column: $'''D''' Row: RowNo
    Variables.IncreaseVariable Value: RowNo IncrementValue: 1
END
Excel.CloseExcel.CloseAndSaveAs Instance: ExcelInstance DocumentFormat: Excel.ExcelFormat.OpenXmlWorkbook DocumentPath: $'''%RootDir%\\%TagetFile%'''

個別のアクションについて

CSVファイルの存在チェックを行う

CSVファイル(都道府県.txt)が存在しない場合はメッセージを表示し終了します。

PowerAutomate

CSVファイルを読み込む

ファイル名を指定し読み込み方法を指定します。文字化けする可能性があるため「エンコード」は注意して下さい。判断に迷う場合は「システムの規定値」を指定してみて下さい。また、「最初の行に列名が含まれています」を有効化すると1行目は列名として扱います。

PowerAutomate
PowerAutomate

CSVファイルを読み込むと下図のようにdatabase変数にセットされます。

PowerAutomate

Excelファイルを新規作成する

Excelファイルを新規作成します。ここでは画面表示は行いません。

PowerAutomate
PowerAutomate

CSVファイルのヘッダ情報をExcelに書き込む

読み込んだCSVファイルのヘッダ情報を取得([CSVファイルの変数].Colnmns)し、取得したヘッダ情報を1行目固定で列番号を指定しながらExcelファイルに書き込みます。

PowerAutomate
PowerAutomate

CSVファイルのデータをExcelファイルに書き込む

読み込んだCSVファイルを列と行を指定しながらExcelファイルに書き込みます。
書き込む値で列情報を指定するには「変数名[‘(列名称)’]または「変数名[(インデックス番号)]」で指定します。

PowerAutomate

Excelファイルを保存する

Excelファイルを保存し終了します。警告なしで上書き保存します。

PowerAutomate
PowerAutomate

注意点

PADではループにかなり時間がかかります。ファイルの内容が大量にある場合はExcelマクロ等で扱うことも検討してください。

コメント

タイトルとURLをコピーしました