デスクワークを超絶快適にするおすすめギアたち詳しく見る

PADでExcelに行の挿入をしてから書き込みする。(転記)

ぽこがみさま

前回までの記事では、Excelのいくつかの転記方法について学習しました。

じょじお

この記事では規定のフォーマットに行の挿入をしながら転記を行う方法について学習します。

目次

「Excelワークシートに行を挿入」アクション

Excelに行を挿入するには「Excelワークシートに行を挿入」アクションを使います。このアクションを1回実行すると指定した行に1行挿入します。4行挿入するには、(ループなどを使って)このアクションを4回実行する必要があります。

「Excelワークシートに行を挿入」アクション(Microsoft リファレンス)

フローが動いている動画はこちら

(STEP1)Excelを読み込む処理の作成

STEP
ゴールを確認します。
Power Automate for desktop
テスト請求書.xlsx
Power Automate for desktop
請求データ. xlsx

2つのExcelファイルがあります。

  • テスト請求書.xlsx
  • 請求データ. xlsx

テスト請求書が請求書のフォーマットです。請求データがフォーマットに書き込むべきデータです。データをフォーマットに転記します。

しかし、請求データが6件あるのに対してフォーマットに入力欄が4行しかありません。行の挿入アクションを使って必要な行を追加してから転記します。

データ件数の変動に対応できるようにデータ件数から必要な行数を読み取って、必要な数だけ行挿入できるようにします。

STEP
Power Automate for desktopを起動して新規フローを作成します。
STEP
「Excelの起動」アクションを追加します。
Power Automate for desktop

▲「Excel」グループの中の「Excelの起動」アクションのパラメータを入力します。

  • Excelの起動:「次のドキュメントを開く」を選択します。
  • ドキュメントパス:Excelのファイルパスを入力します。C:\Users\user\Desktop\電話番号.xlsx
  • インスタンスを表示する:Excelを開くときにバックグラウンドで表示しないようするか、表示するかを選択します。チェックをオフにするとExcelが画面上に表示されません。
  • 読み取り専用として開く:書き込みを行わない場合は、読み取り専用のチェックをオンにします。図ではオフになっていますが多くの場合安全のために読み取り専用でよいかなと思います。

生成する変数:ExcelSeikyuData

▲今回は一つのフローで複数のExcelを扱うため管理上わかりやすいようにデフォルトのExcelDataという名前からExcelSeikyuDataという名前に変更しています。

STEP
「アクティブなExcelワークシートの設定」アクションを追加します。
アクティブなExcelワークシートの設定

▲アクショングループの中の「Excel」の中の「アクティブなExcelワークシートの設定」アクションを追加します。

  • Excelインスタンス:起動したExcelインスタンスを指定します。今回は「Excelの起動」アクションによってExcelを開きましたので「Excelの起動」アクションのフロー変数である「%ExcelInstance%」を指定します。
  • 次とともにワークシートをアクティブ化:ワークシートをどのように指定するかを「名前」か「インデックス」のいずれかから選択します。今回は「シートの名前がわからずExcelの中の一番左側のシートを選択する」という想定のもと「インデックス」を選択します。
  • ワークシートインデックス:シートのインデックス番号を指定します。インデックス番号の数え方はブックのシートは左から数えます。今回は一番左端のシートを指定したいので「1」と入力します。
STEP
「Excelワークシートから列における最初の空の行を取得」アクションを追加します。 
Power Automate for desktop

▲「Excel」グループの中の「詳細」の中の「Excelワークシートから列における最初の空の行を取得」アクションを追加してパラメータを入力します。

  • Excelインスタンス:%ExcelSeikyuData%
  • 列:1

生成する変数:%FirstFreeRowOnColumn%

STEP
「Excelワークシートから最初の空の列や行を取得」アクションを追加します。
Power Automate for desktop

▲「Excel」グループの中の「Excelワークシートから最初の空の列や行を取得」アクションを追加します。

  • Excelインスタンス:%ExcelSeikyuData%

生成する変数:FirstFreeColumn、FirstFreeRow

STEP
「Excelワークシートから読み取り」アクションを追加します。
Power Automate for desktop

▲「Excel」グループの中の「Excelワークシートから読み取り」アクションを追加します。

  • Excelインスタンス:%ExcelSeikyuData%
  • 取得:セル範囲の値
  • 先頭列:1
  • 先頭行:1
  • 最終列:%FirstFreeColumn – 1%
  • 最終行:%FirstFreeRowOnColumn – 1%
STEP
「Excelを閉じる」アクションを追加します。
Power Automate for desktop

▲「Excel」グループの中の「Excelを閉じる」アクションを追加します。

  • Excelインスタンス:%ExcelInstance%
  • Excelを閉じる前:ドキュメントを保存しない
STEP
Excelを読み込む処理が完成しました。
Power Automate for desktop

請求データを読み込む処理が完成しました。合計6個のアクションを使いました。次は請求書のフォーマットファイルを開いて行の挿入の処理と書き込みの処理を作成していきます。

STEP
Excelファイルが読み込めるかテストします。

ここで一度テストします。フローを実行してExcelファイルが読み込めるか確認しましょう。ExcelData変数の中身も確認してください。

(STEP2)Excelに行の挿入する処理をつくる。

じょじお

読み込む処理の最後のアクションの後ろにさらにアクションを追加していきます。フローの7行目から作ります。

STEP
「Excelの起動」アクションを追加します。
STEP
「キーの送信」アクションを追加します。

このアクションはExcelのウィンドウに「Windowsキー+↑キー」のショートカットを送信してExcel画面を最大化表示しています。フローを作成するうえで動作が確認しやすいので入れています。無くても良いアクションなのでお好みでどうぞ。Excelインスタンスを非表示で実行する場合は削除してください。

STEP
「変数の設定」アクションを追加します。
  • 設定:%NumberOfRowsToAdd%
  • 宛先:%ExcelData.RowsCount – 4%

この変数は挿入すべき行数をカウントするための変数です。

%ExcelData.RowsCount%は書き込むべき請求データの行数です。そのデータの行数から4を引いてますね。

この4は何かというと請求書のフォーマットに予め用意されている入力スペースの行数です。

請求書フォーマットには4行分の入力スペースは既に確保されていますので、もし請求データが4行以下の場合、行の挿入をする必要がありません。ですので4を引いて何行分の「行の挿入」をすればよいかの判断材料にしています。

例えばデータ行数が10の場合、10-4で6となりますので行の挿入アクションを6回実施する必要があります。もしデータ行数が4以下の場合、条件分岐を使って行の挿入を行わないようにしたいと思います。

STEP
「if」アクションを追加します。
  • 最初のオペランド:%NumberOfRowsToAdd%
  • 演算子:以上である(>=)
  • 2番目のオペランド:1

1つ前のステップで解説したように、%NumberOfRowsToAdd%変数には「挿入すべき行数」が格納されます。この変数で行の挿入をするのかしないのかをifアクションで処理を分岐させたいと思います。

  • ifの条件分にマッチする場合:ifの中のアクションを行います。
  • ifの条件分にマッチしない場合:ifの中のアクションは行わず次のアクションにスキップします。
STEP
(ifの中の処理)「Loop」アクションを追加します。
Power Automate for desktop

「ループ」グループの中の「Loop」アクションを追加してパラメータを入力します。このアクションはifの中に追加してください。%NumberOfRowsToAdd%の中の数だけ行の挿入を行うためにループします。

  • 開始値:1
  • 修了:%NumberOfRowsToAdd%
  • 増分:1

生成された変数:LoopIndex

STEP
(ループの中の処理)「Excelワークシートに行を挿入」アクションを追加します。
Power Automate for desktop

▲「Excel」グループの中の「Excelワークシートに行を挿入」アクションを追加します。パラメータを入力します。

  • Excelインスタンス:%ExcelSeikyusyo%
  • 行インデックス:14
Power Automate for desktop

▲14行目に必要な数だけ行挿入を行います。見出しの直下(11行目)には行挿入しない方がいいです。行挿入は一つ上の書式をマネするので、見出しの書式(Boldとかフォントサイズとか)と同じになっちゃいます。

STEP
行を挿入する処理が完成しました。フローをテストします。

行が挿入されているか確認します。

(STEP3)Excelワークシートに書き込む処理をつくる。

STEP
「変数の設定」アクションを追加します。
Power Automate for desktop

▲「変数」グループの中の「変数の設定」アクションを追加します。

  • 設定:%CurrentWriteRow%
  • 宛先:11
STEP
「For each」アクションを追加します。
Power Automate for desktop
  • 反復処理を行う値:%ExcelData%
  • 保存先:CurrentItem
STEP
(ループの中の処理)「Excelワークシートに書き込み」アクションを追加します。①
Power Automate for desktop
  • Excelインスタンス:%%
  • 書き込む値:%CurrentItem[‘品目’]%
  • 書き込みモード:指定したセル上
  • 列:2
  • 行:%CurrentWriteRow%

品目の列に入力するためのアクションです。

STEP
(ループの中の処理)「Excelワークシートに書き込み」アクションを追加します。②
Power Automate for desktop
  • Excelインスタンス:%%
  • 書き込む値:%CurrentItem[‘合計’]%
  • 書き込みモード:指定したセル上
  • 列:2
  • 行:%CurrentWriteRow%

合計列に記入するためのアクションです。

STEP
(ループの中の処理)「変数を大きくする」アクションを追加します。
Power Automate for desktop

▲「変数」グループの中の「変数を大きくする」アクションを追加します。

  • 変数名:%CurrentWriteRow%
  • 大きくする数値:1
STEP
「Excelを閉じる」アクションを追加します。
Power Automate for desktop
STEP
フローが完成しました。
Power Automate for desktop
Power Automate for desktop
Power Automate for desktop
STEP
フローを実行してみましょう!

Robinソースコード

Excel.LaunchExcel.LaunchAndOpen Path: $'''C:\\Users\\user\\Desktop\\請求データ.xlsx''' Visible: True ReadOnly: True LoadAddInsAndMacros: False Instance=> ExcelSeikyuData
Excel.SetActiveWorksheet.ActivateWorksheetByName Instance: ExcelSeikyuData Name: $'''請求データ'''
Excel.GetFirstFreeRowOnColumn Instance: ExcelSeikyuData Column: 1 FirstFreeRowOnColumn=> FirstFreeRowOnColumn
Excel.GetFirstFreeColumnRow Instance: ExcelSeikyuData FirstFreeColumn=> FirstFreeColumn FirstFreeRow=> FirstFreeRow
Excel.ReadFromExcel.ReadCells Instance: ExcelSeikyuData StartColumn: 1 StartRow: 1 EndColumn: FirstFreeColumn - 1 EndRow: FirstFreeRowOnColumn - 1 ReadAsText: False FirstLineIsHeader: True RangeValue=> ExcelData
Excel.CloseExcel.Close Instance: ExcelSeikyuData
Excel.LaunchExcel.LaunchAndOpen Path: $'''C:\\Users\\user\\Desktop\\請求書テスト.xlsx''' Visible: True ReadOnly: True LoadAddInsAndMacros: False Instance=> ExcelSeikyusyo
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{LWin}{Up}''' DelayBetweenKeystrokes: 10 SendTextAsHardwareKeys: False
SET NumberOfRowsToAdd TO ExcelData.RowsCount - 4
IF NumberOfRowsToAdd >= 1 THEN
    LOOP LoopIndex FROM 1 TO NumberOfRowsToAdd STEP 1
        Excel.InsertRow Instance: ExcelSeikyusyo Index: 14
    END
END
SET CurrentWriteRow TO 11
LOOP FOREACH CurrentItem IN ExcelData
    Excel.WriteToExcel.WriteCell Instance: ExcelSeikyusyo Value: CurrentItem['品目'] Column: 2 Row: CurrentWriteRow
    Excel.WriteToExcel.WriteCell Instance: ExcelSeikyusyo Value: CurrentItem['合計'] Column: 3 Row: CurrentWriteRow
    Variables.IncreaseVariable Value: CurrentWriteRow IncrementValue: 1 IncreasedValue=> CurrentWriteRow
END
Excel.CloseExcel.CloseAndSaveAs Instance: ExcelSeikyusyo DocumentFormat: Excel.ExcelFormat.OpenXmlWorkbook DocumentPath: $'''C:\\Users\\user\\Desktop\\請求書\\請求書'''

Power Automate for desktopのフローデザイナーに張り付けることで今回作成フローをご自分のPCで再現することができます。

Excelを今日の日付の名前を付けて保存するには?

下記の記事を参考にしてください。

印刷レイアウト調整のコツ

行の挿入によるページ設定・印刷レイアウト崩れが考えられますので、それを抑えるためのExcelフォーマットでの事前設定について次の記事でまとめたいと思っています。

>記事準備中

まとめ

じょじお

この記事ではExcelに行を挿入しながら書き込む方法について学習しました。

ぽこがみさま

このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!

Power Automate学習教材

Power AutomateをKindleで学びたい方はコチラ

▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。

Power Automate for Desktopの基本をしっかり学習するのにオススメです。RPA界隈では有名なRPAエンジニア集団である『ロボ研』さんが監修されている解説書です。テスト用の業務Webシステム/デスクトップ業務アプリを使いながら実践形式で学習できる点が一番のメリットかなぁと思います。

Power Automate クラウドフローの入門書です。日本語の解説書は数少ないのでレアかと思います。変数の解説から代表的なアクションの解説がされているので初心者におすすめの本です。

Microsoft 365/ Power Automate / Power Platform / Google Apps Script…

Power Automateを動画で学びたい方はコチラ

▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。

この記事が気に入ったら
フォローしてね!

シェアしてくれたらウレシイ(·:゚д゚:·)
  • URLをコピーしました!
  • URLをコピーしました!
目次
閉じる