Power Automate DesktopでExcelの列一番下にデータを追加するフローの作り方

notebook IT

Excelの特定シートの列で最初にある空欄の行を取得し、そこにデータを追加していくフローの作り方です。ここではA列を使用し、A列以外に何もデータがない状態を想定しています。
ここでは例として入力ボックスで書いた内容を連続で追加していく、というものを目指します。適宜用途に合わせてご修正いただければと思います。

スポンサーリンク

前準備

Excelファイルの準備、シートと空の行の取得

PowerAutomateDesktop excel 下に追加1
ExcelExcelの起動でExcelを立ち上げてインスタンス化し、
PowerAutomateDesktop excel 下に追加2
PowerAutomateDesktop excel 下に追加3
アクティブなシートの最初の空の列、行をExcelワークシートから最初の空の列や行を取得で取得します。
PowerAutomateDesktop excel 下に追加4
実行するとExcelファイルの指定したシートが開き、
PowerAutomateDesktop excel 下に追加5
空の列、行が変数として取得されます。……というのが、最初のリンクまでの内容。

入力内容の準備

PowerAutomateDesktop excel 下に追加6
入力内容は色々種類がありますが、今回は入力ダイアログで手入力したものをExcelに転記させます。
PowerAutomateDesktop excel 下に追加7
実行するとこのようになります。現状、入力しても何も起きません。

入力内容をExcelに反映

PowerAutomateDesktop excel 下に追加9
書き込む値に入力ダイアログの変数(デフォルトでUserInput)、列に1(=A列)、行にアクティブなシートの最初の空の列、行の行のほうの変数(デフォルトでFirstFreeRow)を入力します。
つまりA列の最初の空の行に、入力ダイアログの内容を入力しています。
PowerAutomateDesktop excel 下に追加10
実行して何か書いてOKを押すと、
PowerAutomateDesktop excel 下に追加11
入力内容がA列一番下に入力されます。これで基本形は完成。

繰り返し入力

変数の作成

PowerAutomateDesktop excel 下に追加13
今回は「書く」か「やめる」しかないですが、あとあと分岐を実装することを想定して一応変数を作っておきます。変数の設定をフロー頭に追加し、
PowerAutomateDesktop excel 下に追加14
値を何か入れておきます。

ループの作成

PowerAutomateDesktop excel 下に追加12
ループからループ条件を追加し、
PowerAutomateDesktop excel 下に追加15
今追加した変数が初期値の限り、ループを繰り返すようにします。特に何もしなければ無限ループです。
PowerAutomateDesktop excel 下に追加16
ループの中に空の行列を取得~Excelに書き込みまでをドラッグで入れます。

脱出条件

PowerAutomateDesktop excel 下に追加17
If文を追加して、
PowerAutomateDesktop excel 下に追加18
最初のオペランドに入力ダイアログのボタンを押した時の戻り値(デフォルトでButtonPressed)、二番目にキャンセルを押した時の値(Cancel)を入力します。
PowerAutomateDesktop excel 下に追加19
If条件が生成されるので、この中でループの条件で使ってる変数の値を初期値以外にするか、
PowerAutomateDesktop excel 下に追加20
またはダイレクトにループを抜けるを追加してもいいです。なんにせよ、これでキャンセルを押すとループを終了できるようになりました。

成果物、ソースコード

pad excel 下に入力
完成品の実行例です。
以下コードを貼り付けでも再現できます(赤字部分など適宜要修正)。

SET NewVar TO 0
Excel.LaunchExcel.LaunchAndOpenUnderExistingProcess Path: $'''C:\\Users\\User\\Desktop\\sunagitsu.xlsm''' Visible: True ReadOnly: False Instance=> ExcelInstance
Excel.SetActiveWorksheet.ActivateWorksheetByName Instance: ExcelInstance Name: $'''Sheet14'''
LOOP WHILE (NewVar) = (0)
    Excel.GetFirstFreeColumnRow Instance: ExcelInstance FirstFreeColumn=> FirstFreeColumn FirstFreeRow=> FirstFreeRow
    Display.InputDialog InputType: Display.InputType.SingleLine IsTopMost: False UserInput=> UserInput ButtonPressed=> ButtonPressed
    Excel.WriteToExcel.WriteCell Instance: ExcelInstance Value: UserInput Column: 1 Row: FirstFreeRow
    IF ButtonPressed = $'''Cancel''' THEN
        EXIT LOOP
    END
END


条件処理は入力内容そのものから取得することもできるので、改造すれば簡単な人口無能やアプリ、クイズなども製作可能です。

関連記事

Microsoft Power Automate Desktop(PAD)アクション、使い方一覧
Power Automate Desktopの使い方を機能・分類別に参照できるまとめです。

コメント