Excelの特定シートの列で最初にある空欄の行を取得し、そこにデータを追加していくフローの作り方です。ここではA列を使用し、A列以外に何もデータがない状態を想定しています。
ここでは例として入力ボックスで書いた内容を連続で追加していく、というものを目指します。適宜用途に合わせてご修正いただければと思います。
前準備
Excelファイルの準備、シートと空の行の取得
前準備として、この記事で使ったExcelをそのまま使います。
![PowerAutomateDesktop excel 下に追加1](https://sunagitsune.com/wp-content/uploads/2022/03/11e6af3d8380f7c0109e5581836cfafb.png)
Excel→Excelの起動でExcelを立ち上げてインスタンス化し、
![PowerAutomateDesktop excel 下に追加2](https://sunagitsune.com/wp-content/uploads/2022/03/c9f40cb653c4d46cbe12d70240cecfe3.png)
アクティブなExcelワークシートの設定でワークシートを指定、
![PowerAutomateDesktop excel 下に追加3](https://sunagitsune.com/wp-content/uploads/2022/03/d78211fdcc63644d37cb3a9b8560c537.png)
アクティブなシートの最初の空の列、行をExcelワークシートから最初の空の列や行を取得で取得します。
![PowerAutomateDesktop excel 下に追加4](https://sunagitsune.com/wp-content/uploads/2022/03/b12f7ace1850aa8f99cb05fad3dbb220.png)
実行するとExcelファイルの指定したシートが開き、
![PowerAutomateDesktop excel 下に追加5](https://sunagitsune.com/wp-content/uploads/2022/03/fa8055378075f5956239706c222ebaee.png)
空の列、行が変数として取得されます。……というのが、最初のリンクまでの内容。
入力内容の準備
![PowerAutomateDesktop excel 下に追加6](https://sunagitsune.com/wp-content/uploads/2022/03/93f49a0f6e2dd3d00938606e041da426.png)
入力内容は色々種類がありますが、今回は入力ダイアログで手入力したものをExcelに転記させます。
![PowerAutomateDesktop excel 下に追加7](https://sunagitsune.com/wp-content/uploads/2022/03/d2c46ecd426338f5e794ddfefdf8e2ef.png)
実行するとこのようになります。現状、入力しても何も起きません。
入力内容をExcelに反映
![PowerAutomateDesktop excel 下に追加8](https://sunagitsune.com/wp-content/uploads/2022/03/27e3b2aa02939cf3ca56a29713244f8e.png)
Excelワークシートに書き込みを追加し、
![PowerAutomateDesktop excel 下に追加9](https://sunagitsune.com/wp-content/uploads/2022/03/072014169f73667fb911fb37490395a2.png)
書き込む値に入力ダイアログの変数(デフォルトでUserInput)、列に1(=A列)、行にアクティブなシートの最初の空の列、行の行のほうの変数(デフォルトでFirstFreeRow)を入力します。
つまりA列の最初の空の行に、入力ダイアログの内容を入力しています。
つまりA列の最初の空の行に、入力ダイアログの内容を入力しています。
![PowerAutomateDesktop excel 下に追加10](https://sunagitsune.com/wp-content/uploads/2022/03/66719a1e6750dd15df37459142f05f96.png)
実行して何か書いてOKを押すと、
![PowerAutomateDesktop excel 下に追加11](https://sunagitsune.com/wp-content/uploads/2022/03/a950291306e3f4e5614161c49c49d35c.png)
入力内容がA列一番下に入力されます。これで基本形は完成。
繰り返し入力
変数の作成
![PowerAutomateDesktop excel 下に追加13](https://sunagitsune.com/wp-content/uploads/2022/03/de3354e492ff9f084c568fd005f40cf7.png)
今回は「書く」か「やめる」しかないですが、あとあと分岐を実装することを想定して一応変数を作っておきます。変数の設定をフロー頭に追加し、
![PowerAutomateDesktop excel 下に追加14](https://sunagitsune.com/wp-content/uploads/2022/03/4b9df5395cc9a0297f62c9fcb9b51fed.png)
値を何か入れておきます。
ループの作成
![PowerAutomateDesktop excel 下に追加12](https://sunagitsune.com/wp-content/uploads/2022/03/01da8ef4f3ad7c41f8e3d2fde86156bf.png)
ループからループ条件を追加し、
![PowerAutomateDesktop excel 下に追加15](https://sunagitsune.com/wp-content/uploads/2022/03/543995f5dd96ffaa80865e6702a15e15.png)
今追加した変数が初期値の限り、ループを繰り返すようにします。特に何もしなければ無限ループです。
![PowerAutomateDesktop excel 下に追加16](https://sunagitsune.com/wp-content/uploads/2022/03/f83c1a0760859c3f5734634547a1eeeb.png)
ループの中に空の行列を取得~Excelに書き込みまでをドラッグで入れます。
脱出条件
![PowerAutomateDesktop excel 下に追加17](https://sunagitsune.com/wp-content/uploads/2022/03/8e75701f85e48349f066beee2e306962.png)
If文を追加して、
![PowerAutomateDesktop excel 下に追加18](https://sunagitsune.com/wp-content/uploads/2022/03/da49dee1793a4d61e71304dfc2eeecfb.png)
最初のオペランドに入力ダイアログのボタンを押した時の戻り値(デフォルトでButtonPressed)、二番目にキャンセルを押した時の値(Cancel)を入力します。
ダイアログの押したボタンで条件処理について詳しくはこちら。
![PowerAutomateDesktop excel 下に追加19](https://sunagitsune.com/wp-content/uploads/2022/03/50c5c1d19e6105985a6eef7e92d05b83.png)
If条件が生成されるので、この中でループの条件で使ってる変数の値を初期値以外にするか、
![PowerAutomateDesktop excel 下に追加20](https://sunagitsune.com/wp-content/uploads/2022/03/453107ec1a349dc4fba067041480f61f.png)
またはダイレクトにループを抜けるを追加してもいいです。なんにせよ、これでキャンセルを押すとループを終了できるようになりました。
成果物、ソースコード
![pad excel 下に入力](https://sunagitsune.com/wp-content/uploads/2022/03/6bd7a75757b97a696db14784fe594ea3.gif)
完成品の実行例です。
以下コードを貼り付けでも再現できます(赤字部分など適宜要修正)。
以下コードを貼り付けでも再現できます(赤字部分など適宜要修正)。
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
条件処理は入力内容そのものから取得することもできるので、改造すれば簡単な人口無能やアプリ、クイズなども製作可能です。
関連記事
似たようなことをExcelマクロで実行している例です。
![](https://sunagitsune.com/wp-content/uploads/2021/11/machine-learning-g0b59793cc_1280-160x90.png)
Microsoft Power Automate Desktop(PAD)アクション、使い方一覧
Power Automate Desktopの使い方を機能・分類別に参照できるまとめです。
コメント