請求書をExcelで作成しているのですが、請求書の発行日を間違えてしまいました。
何百枚ある請求書の発行日を修正しなければなりません。
時間がかからずに、自動で発行日を修正する方法は無いですか。
デスクトップ用Power Automateを使用すれば、自動で文字や数値の置き換えができます。
置き換えが必要なExcelブックをフォルダーに入れて、置き換えたい文字を指定し、デスクトップ用Power Automateを実行するだけで、指定した文字や数値に置き換わります。
今回はデスクトップ用Power Automateの「Excelワークシート内のセルを検索して置換する」アクションを使用して、フォルダー内のすべてのExcelブックからワークシートを読み取り、指定したテキストの置き換えを行います。
Excelブックをフォルダーに入れるだけで、一々Excelブックを手動で開かなくても自動で起動し、指定したテキストに置き換えることができます。
1.フォルダーの選択ダイアログを表示
置き換えが必要なExcelブックが保存されているフォルダーを選択します。
今回は訂正する請求書が保存されているフォルダーを選択します。
1.アクションの「メッセージボックス」から「フォルダーの選択ダイアログを表示」をワークスペースにドラッグ&ドロップします。
・ダイアログの説明:説明が必要な場合は入力します。
・初期フォルダー:フォルダーの場所が決まっている場合は、初期フォルダーにExcelブックの入っている親フォルダーを入力します。
※右にあるフォルダーアイコンから選択できます。
場所が決まっていない場合は空白のままにします。
2.If
上記の「フォルダーの選択ダイアログを表示」で表示されたフォルダー選択をキャンセルした場合に、それ以降の処理を行わないようにIFで処理します。
1.アクションの「条件」から「If」をワークスペースにドラッグ&ドロップします。
・最初のオペランド:カスタムフォームを表示で生成された変数 %ButtonPressed% を入力します。
・演算子:と等しくない(<>) を選択します。
・2番目のオペランド:Cancel と入力します。
IFの条件分岐で、キャンセルではない(等しくない)場合に処理が実行されます。
キャンセルした場合は、処理が中断されます。
3.フォルダー内のファイルを取得
フォルダー内のExcelブックを取得します。
1.アクションの「フォルダー」から「フォルダー内のファイルを取得」をIfの中にドラッグ&ドロップします。
・フォルダー:%SelectedFolder%
「フォルダーの選択ダイアログを表示」で生成された変数を使用します。
・ファイルフィルター:*.xlsx
ファイルの拡張子をExcelに制限したいので、*の後ろにExcelの拡張子を入力します。
※2つの拡張子に対応する場合は*.xl*と入力します。
Excelブック(xlsx)、マクロ有効ブック(xlsm)の両方に対応できます。
・サブフォルダーを含める:サブフォルダーを含める場合はチェックを入れます。
4.End
1.「フォルダー内のファイルを取得」の下に「IfのEnd」を設置します。
5.Loop
Loopを設置して、「フォルダー内のファイルを取得」で読み取ったExcelブックを起動し、すべてのワークシートからデータを取得します。
Excelブックの数だけ「ループ」で繰り返し処理を行います。
1.アクションの「ループ」から「Loop」をワークスペースにドラッグ&ドロップします。
開始値:0
終了:%Files.Count-1% 読み取ったExcelブックの番号が0から始まるので-1します。
増分:1
6.Excelの起動
「フォルダー内のファイルを取得」で生成された変数「Files」に格納されているExcelブックを開きます。
1.アクションの「Excel」から「Excelの起動」をワークスペースにドラッグ&ドロップします。
・Excelの起動:次のドキュメントを開く
・ドキュメントパス:%Files[LoopIndex]%
LoopIndexを使用してExcelブックの数だけ開きます。
生成された変数:%ExcelInstance%
7.すべてのExcelワークシートの取得
LoopアクションでExcelブックのワークシートの数だけループ処理するため、「すべてのExcelワークシートの取得」から生成されたSheetNames.Countを取得します。
Excelブックに複数のワークシートが作成されている場合に使用します。
SheetNames.Countにはワークシートの数が格納されているので、その数を利用してループ回数を自動で決定します。
1.アクションの「Excel」の「詳細」から「すべてのExcelワークシートの取得」をワークスペースにドラッグ&ドロップします。
・Excelインスタンス:%ExcelInstance%
生成された変数:SheetNames
8.Loop
LoopアクションでExcelブックのワークシートの数だけループ処理し、すべてのワークシート内のセルを置き換えます。
1.アクションの「ループ」から「Loop」をワークスペースにドラッグ&ドロップします。
・開始値:1
次のアクションで使用する「アクティブなExcelワークシートの設定アクション」の「次と共にワークシートをアクティブ化」をインデックスに設定する場合、インデックス番号は1から始まりますので、開始値に1を入力します。
・終了:%SheetNames.Count%
SheetNames.Countのカウント数だけ、ループさせます。
%SheetNames.Count%の選択方法
①パラメータ選択の終了:右側の{☓}をクリックします。
②SheetNamesの▷をクリックします。
③.Countをクリックして選択した状態にします。
④選択をクリックします。
・増分:1
ループの数を1ずつ増やしていきます。
フロー番号9で使用する「アクティブなExcelワークシートの設定」のワークシートインデックスに今回生成された変数LoopIndexを使用します。
9.アクティブなExcelワークシートの設定
Excelブックから読み取りたい、ワークシートを設定します。
今回は全てのワークシートからExcelDataを取得します。
1.アクションの「Excel」から「アクティブなExcelワークシートの設定」をワークスペースにドラッグ&ドロップします。
・Excelインスタンス:%ExcelInstance%
・次と共にワークシートをアクティブ化:インデックス
ワークシートを左から順番にインデックス番号で開いていきます。
・ワークシートインデックス:%LoopIndex%
すべてのワークシートを開くために、ワークシートインデックスにLoopで生成された変数LoopIndexを使用し、ループの回数でインデックスの番号を取得します。
10.Excelワークシート内のセルを検索して置換する
「Excelワークシート内のセルを検索して置換する」のアクションを設置し、Excelワークシート内の指定したテキストを検索して置き換えます。
1.アクションの「Excel」の「詳細」から「Excelワークシート内のセルを検索して置換する」をワークスペースにドラッグ&ドロップします。
・Excelインスタンス:%ExcelInstance%
・検索モード:検索して置換
・すべて一致:チェックを入れる
一致するセル内のすべてのテキストを置き換えることができます。
・検索するテキスト:置き換え前のテキストを入力します。
間違えた発行日を入力します。
・置換するテキスト:置き換え後のテキストを入力します。
正しい発行日を入力します。
・セルの内容が完全に一致する:チェックを入れると、「検索するテキスト」に指定したテキストと完全に一致する場合にセル内容が置き換わります。
・検索条件:テキストを検索する順番を決めます。
11.End
Endを適切な位置に配置します。
12.現在の日時を取得
後でExcelブックを保存する時に、ファイル名に現在の日時を設定したいので、「現在の日時を取得」のアクションを設置します。
1.アクションの「日時」から「現在の日時を取得」をワークスペースにドラッグ&ドロップします。
13.Excelを閉じる(名前を付けてドキュメントを保存)
請求書を自動で保存したい場合は「Excelを閉じる」で保存するか「Excelの保存」のアクションをフローに追加します。
今回はExcelを閉じるで請求書を保存します。
1.アクションの「Excel」から「Excelを閉じる」をワークスペースにドラッグ&ドロップします。
ファイル名に日付と時刻を追加したいので、「現在の日時を取得」で取得した日時を使います。
Excelを閉じる前:名前を付けてドキュメントを保存
ドキュメントパス:
ファイルの保存先\ファイル名%CurrentDateTime.Year%年%CurrentDateTime.Month%月%CurrentDateTime.Day%日%CurrentDateTime.Hour%時%CurrentDateTime.Minute%分%CurrentDateTime.Second%秒.xlsx
14.End
Endを適切な位置に配置します。
以上でフォルダー内のExcelブックのセル内容を置き換える方法をご紹介しました。