Power Automate DesktopでExcelのセル内改行(LF)を処理する

 Power Automate DesktopでExcelのセル内改行を処理する必要が生じたので、調べてみました。

(正規表現を使えば一発でした。お急ぎの方は最後をご覧ください)


標準のアクションでは難しい

Excelから取得したセルデータに対して、とりあえずダメもとで「テキストの分割」アクションを使って分割を試みましたがやっぱりだめでした。

Excelのセル内改行コードはCRLF(0x0D0A)ではなく、LF(0x0A)なので、改行とは認識されませんでした。


スクリプトを使って取得する

改行文字を指定するには「テキストの分割」アクションになんとかLFを指定する必要があります。ところが、Power Automate DesktopのアクションにはExcelのCHARのような関数は見当たりません。

検索すると次のページがヒットしました。

Power Automate Desktopで、改行コード(CRLF)を使用する方法

なるほど、スクリプトを使って生成するわけですね。


VBScriptを使った方法

上の例ではPowerShellを使って取得していますが、VB使いの私としては、試しにVBScriptを使って取得してみました。実行するコードは次の通りです。

WScript.StdOut.Write(vbLF)

コードの説明は次のページに書かれています。なおvbLFはLF文字を表すVBScriptの定数です。

atmarkit - 第3回 WScriptオブジェクトの詳細(1)

可読性という意味ではVBScriptの方が良いかもしれませんが、簡単なのはPowerShellです。


サンプル

LFを使ってセル内改行を分割するサンプルフローは次の通りです。


「テキストの分割」アクションでは、「VBScriptの実行」アクションで生成された変数を指定しています。


コードは次の通りです。空のフローに貼り付ければ動作するのではないかと思います。

Excel.Attach DocumentName: $'''C:\\Test\\Book1.xlsx''' Instance=> ExcelInstance
Excel.ReadFromExcel.ReadCell Instance: ExcelInstance StartColumn: 1 StartRow: 1 ReadAsText: False CellValue=> ExcelData
Scripting.RunVBScript VBScriptCode: $'''WScript.StdOut.Write(vbLF)''' ScriptOutput=> VBScriptOutput ScriptError=> ScriptError
Text.SplitText.SplitWithDelimiter Text: ExcelData CustomDelimiter: VBScriptOutput IsRegEx: False Result=> TextList
LOOP FOREACH CurrentItem IN TextList
    Display.ShowMessageDialog.ShowMessage Message: CurrentItem Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed
END


c:\test\book1.xlsx に次のように書いて開いておきます。

フローを実行すると次のように表示されます。


正規表現で一発解決

上の投稿を公開した後に、LFと','の両方に対応できるとええな。正規表現が使えればな、と思ったところで、ん? 正規表現!? 見たよそれ!!、と思いアクションを開くと正規表現のオプションが!! 早速 \n を指定してみたところ、サクッと動きました。


Excelのセル内改行を処理する場合には正規表現を使いましょう。

ちなみに、セル内改行でもカンマ区切りでも対応できるようにするには、区切り記号に次の文字列を指定します。

[\n,]

角括弧でくくることにより、\nもしくは「,」に該当するものが区切り文字として認識されます。

これでセル内改行されているデータもカンマ区切りされているデータも分割できるようになります。データを見やすいのはセル内改行。簡単に入力できるのはカンマ区切り。お好みで入力できます。


コメント

過去の投稿を見る

もっと見る

アクセスランキング(過去30日間)

セキュリティ対策ソフトのノートンが詐欺ソフトまがいになってしまってショック

Teamsで日本語入力すると左上に変換ウィンドウが出る

突然滅茶苦茶遅くなったPCがWindows Updateのキャッシュクリアで復活

Excel 2019 クエリが原因で日本語入力の一文字目が勝手に確定する

Microsoft Flight Simulator (2020)のPS4コントローラー設定

Excel VBAからODBCを使ってデータを簡単に取得する

Amazon Prime Videoで4K UHD映画を検索する方法

次期主力Wi-Fiルーター NEC Aterm WX5400HP

iPhone 12 Proと iPhone 8 Plusのサイズを比較

タレックス(TALEX)のサングラスには寿命がある