①行数が変わるExcelデータを自動で読み取る方法
1. 使うExcelファイルの準備
まずは練習用のExcelを用意します。
デスクトップなどに以下のようなシートを作ってください。
| No | 氏名 | 売上金額 |
|---|---|---|
| 1 | 佐藤 | 15000 |
| 2 | 鈴木 | 22000 |
| 3 | 田中 | 18000 |
※ 行数は日によって変わってOKです。
ファイル名は「売上一覧.xlsx」とします。
2. フロー全体の流れ
このフローでやることは次の通りです。
- Excelを開く
- データ範囲を読み取る
- 各行に対して繰り返す
- 各行の中の値を取り出して、メッセージで表示する
これを作るだけで、「行数が変わるExcelデータを自動で扱う」基礎が完全に理解できます。
3. 実際の手順(ステップごとに詳しく解説)
✅ ステップ1:Excelファイルを開く
- PADを起動します。
- 「+新しいフロー」をクリックし、
フロー名を「Excel読み取りテスト」と入力 → 作成。 - 左側のアクション検索欄に「Excel」と入力。
- 「Excelワークシートを起動」アクションをドラッグします。
- 「ドキュメントパス」に、先ほど作成した「売上一覧.xlsx」を指定します。
👉 ポイント:「Excelインスタンスを保存」には「ExcelInstance」と名前を付けておくと後で使いやすいです。
✅ ステップ2:データ範囲を読み取る
- 「Excelワークシートから範囲を読み取る」アクションを追加します。
- 「Excelインスタンス」には「ExcelInstance」を選択。
- 「範囲」欄は空欄でOK(空欄にすると自動で使用範囲全体を読み取ります)。
- 「読み取ったデータを格納する変数」には「ExcelData」と入力します。
👉 これで、Excelのすべてのデータが「ExcelData」という変数に入ります。
✅ ステップ3:各行に対してループする
- 検索欄に「繰り返し」と入力。
- 「各項目に対して繰り返す」アクションをドラッグします。
- 「リスト」欄に「ExcelData」を入力します。
- 「現在の項目を保存する変数名」には「CurrentRow」と入力。
これでExcelの1行目から順に、自動で処理が繰り返されます。
✅ ステップ4:行の値を取り出して使う
- 「メッセージを表示」アクションを追加します。
- メッセージの内容に次のように入力します。
氏名: %CurrentRow[1]%
売上金額: %CurrentRow[2]%
👉 ポイント
Excelの1列目は CurrentRow[0]、2列目は CurrentRow[1]、3列目は CurrentRow[2] のようにインデックスで指定します。
(列番号は0から始まるので注意!)
✅ ステップ5:Excelを閉じる
最後にExcelを閉じる処理を追加します。
- 「Excelを閉じる」アクションを追加。
- 「Excelインスタンス」に「ExcelInstance」を指定。
- 「変更を保存する」を選択しておくと安心です。
4. フローの動作確認
すべて設定できたら、右上の「▶ 実行」をクリック!
画面に次のようにメッセージが順に表示されれば成功です👇
氏名: 佐藤
売上金額: 15000
氏名: 鈴木
売上金額: 22000
氏名: 田中
売上金額: 18000
Excelの行数を増減させても、ちゃんと自動で全部読み取れていればOKです!
5. よくあるエラーと対処法
| エラー内容 | 原因 | 対処法 |
|---|---|---|
| 「Excelインスタンスが存在しません」 | Excelを閉じる前にフローが止まった | 「Excelを閉じる」アクションの順序を最後にする |
| 「範囲が見つかりません」 | ファイルパスが間違っている | Excelファイルのフルパスを再指定する |
| 「CurrentRow[1]が存在しません」 | 空行や列不足 | Excelの空白行を削除する or 条件分岐でスキップ処理を入れる |
②Power Automate DesktopでVLOOKUPを完全自動化!
1. 準備するExcelファイル
🔹 ファイル①:照合元(顧客一覧.xlsx)
| 顧客ID | 顧客名 | 売上金額 |
|---|---|---|
| A001 | 佐藤 | 15000 |
| A002 | 鈴木 | 18000 |
| A003 | 田中 | 21000 |
ファイル名:顧客一覧.xlsx
場所:デスクトップ上でOKです。
🔹 ファイル②:照合先(請求リスト.xlsx)
| 顧客ID | 請求日 | 請求金額 |
|---|---|---|
| A001 | 2025/10/01 | (ここに売上金額を自動転記) |
| A003 | 2025/10/01 | (ここに売上金額を自動転記) |
ファイル名:請求リスト.xlsx
こちらの顧客IDをもとに、顧客一覧ファイルから「売上金額」を探して転記する、というのが今回の自動化の目的です。
2. フロー全体の考え方
この自動化の流れは次の通りです👇
- 顧客一覧.xlsx(参照元)を読み取る
- 請求リスト.xlsx(転記先)を開く
- 各行の顧客IDを取得
- 顧客一覧の中から一致するIDを検索
- 一致したら、売上金額を請求リストの同じ行に書き込む
- 保存・終了
つまり、「Excel間の照合(VLOOKUP)」を自動で行うイメージです。
3. 実際の操作手順(詳細ステップ)
✅ ステップ1:新しいフローを作成
- Power Automate Desktopを開く
- 「+新しいフロー」 → 名前を「VLOOKUP自動化」に設定
- 作成をクリック
✅ ステップ2:顧客一覧ファイルを開く
- 検索欄に「Excel」と入力
- 「Excelワークシートを起動」アクションをドラッグ
- ファイルパスに「顧客一覧.xlsx」を指定
- 「Excelインスタンスを保存する」に
Excel顧客と入力
✅ ステップ3:顧客一覧のデータを読み取る
- 「Excelワークシートから範囲を読み取る」アクションを追加
- Excelインスタンス →
Excel顧客 - 範囲 → 空欄(自動で全範囲)
- 出力変数名 →
顧客データ
👉 これで顧客一覧が 顧客データ に丸ごと入ります。
✅ ステップ4:請求リストファイルを開く
- もう一度「Excelワークシートを起動」を追加
- ファイルパス →
請求リスト.xlsx - Excelインスタンス名 →
Excel請求
✅ ステップ5:請求リストのデータを読み取る
- 「Excelワークシートから範囲を読み取る」
- Excelインスタンス →
Excel請求 - 範囲 → 空欄
- 出力変数名 →
請求データ
✅ ステップ6:ループ処理で顧客IDを1件ずつ処理
- 「各項目に対して繰り返す」アクションを追加
- リスト →
請求データ - 現在の項目変数名 →
請求行
これで請求リストの1行ずつを自動で処理します。
✅ ステップ7:顧客一覧から一致するIDを探す
ループの中に、さらに「条件分岐」と「繰り返し」を入れます。
- 「各項目に対して繰り返す」アクションを追加(ネスト)
→ リスト:顧客データ
→ 現在の項目変数名:顧客行 - 「条件分岐」をネスト内に追加。
条件に以下を入力します👇
請求行[0] = 顧客行[0]
👉 これは「顧客ID(1列目)が一致したら」を意味します。
✅ ステップ8:一致したら売上金額を転記
- 条件が「真」の分岐の中に「Excelワークシートに書き込み」アクションを追加。
- Excelインスタンス →
Excel請求 - 書き込み先セル → 例えば
C%LoopIndex+2%(C列、2行目以降を動的に) - 書き込む値 →
%顧客行[2]%(顧客一覧の売上金額)
👉 これでVLOOKUPと同じように、顧客IDに対応する金額を自動転記できます!
✅ ステップ9:Excelを保存・閉じる
- 「Excelを保存」→
Excel請求 - 「Excelを閉じる」→ 両方のExcelインスタンスを閉じる
4. 応用ポイント:完全一致/部分一致の使い分け
| 処理方法 | 条件式 | 説明 |
|---|---|---|
| 完全一致(通常のVLOOKUPと同じ) | 請求行[0] = 顧客行[0] | 一致した行だけ転記 |
| 部分一致(IDの一部が合えばOK) | 請求行[0] in 顧客行[0] | 類似文字を含む場合にも対応 |
5. よくあるエラーと対処法
| エラー内容 | 原因 | 対処法 |
|---|---|---|
範囲が見つかりません | Excelファイルが開けない | ファイルパスを絶対パス(例:C:\Users\〜)で指定 |
CurrentRow[2]が存在しません | Excelの列が足りない | 顧客一覧の列構造を確認する |
インスタンスが見つかりません | Excel閉じ処理の順序 | Excel顧客 → Excel請求 の順に閉じる |
③複数Excelファイルをまとめて開いて処理する方法
1. 準備するフォルダとExcelファイル
まず、次のような構成を用意してください👇
📁 C:\Users\あなたの名前\Documents\売上フォルダ
その中に以下のような複数Excelを入れます:
売上レポート_2025-10-01.xlsx
売上レポート_2025-10-02.xlsx
売上レポート_2025-10-03.xlsx
各ファイルには、こんな感じのシートがあると仮定します:
| 日付 | 店舗名 | 売上金額 |
|---|---|---|
| 2025/10/01 | 東京店 | 150000 |
| 2025/10/01 | 名古屋店 | 132000 |
目的は、これらのファイルを自動で順番に開いて、
売上データを読み取る(または集計)処理を自動化することです。
2. フロー全体のイメージ
今回の自動化フローはこうなります👇
- 対象フォルダを指定
- フォルダ内のファイル名をすべて取得
- ファイルごとに繰り返し処理
- Excelを開いてデータを読み取る
- 必要に応じて結果をまとめる
- Excelを閉じる
これが理解できれば、フォルダ単位の自動処理 がすべてできるようになります。
3. 実際の操作手順(完全ステップ解説)
✅ ステップ1:新しいフローを作成
- Power Automate Desktopを開く
- 「+新しいフロー」をクリック
- フロー名を「複数Excel処理」と入力して作成します。
✅ ステップ2:対象フォルダを指定する
- 左側の検索欄に「フォルダー」と入力
- 「フォルダー内のファイルを取得」アクションをドラッグ
- 「フォルダーパス」に以下のように入力します:
C:\Users\あなたの名前\Documents\売上フォルダ
- 出力変数名 →
ファイル一覧
👉 このアクションで、フォルダ内の全ファイル情報が ファイル一覧 に入ります。
✅ ステップ3:ファイルごとに繰り返すループを設定
- 検索欄に「繰り返し」と入力
- 「各項目に対して繰り返す」アクションをドラッグ
- 「リスト」に
ファイル一覧と入力 - 「現在の項目を保存する変数名」に
現在のファイルと入力
👉 これで、フォルダ内のすべてのExcelファイルを順番に処理できるようになります。
✅ ステップ4:Excelファイルを開く
ループの中に次のアクションを追加します。
- 「Excelワークシートを起動」アクションを追加
- 「ドキュメントパス」に
%現在のファイル['Path']%を入力 - 「Excelインスタンスを保存する」には
ExcelInstanceと入力
👉 %現在のファイル['Path']% で、今ループ中のExcelファイルのフルパスを指定できます。
これが「フォルダ内のファイルを順番に開く」ためのポイントです!
✅ ステップ5:データを読み取る
- 「Excelワークシートから範囲を読み取る」アクションを追加
- Excelインスタンス →
ExcelInstance - 範囲は空欄でOK(自動検出)
- 出力変数名 →
ExcelData
👉 これで1つのExcelのデータが変数 ExcelData に格納されます。
必要に応じて、別のExcelやCSVに書き出していくことも可能です。
✅ ステップ6:Excelを閉じる
- 「Excelを閉じる」アクションを追加
- Excelインスタンス →
ExcelInstance - 「変更を保存する」チェックをオン
これでファイルを開く→処理→閉じるまでが自動で完結します。
✅ ステップ7:全体を確認して実行
フロー全体は次のような構成になっていればOKです👇
1️⃣ フォルダー内のファイルを取得
2️⃣ 各項目に対して繰り返す
├ Excelを起動
├ 範囲を読み取る
└ Excelを閉じる
最後に「▶実行」ボタンを押してテスト。
フォルダ内のExcelが順に開いて閉じる動作が見えたら成功です!
4. よくあるトラブルと対処法
| トラブル | 原因 | 解決策 |
|---|---|---|
| ファイルを開くときに止まる | Excelがすでにバックグラウンドで開いている | タスクマネージャーでExcelをすべて終了して再実行 |
| ファイルが開かない | パス指定が間違っている | %現在のファイル['Path']% が正しいか確認 |
| Excelが閉じない | 閉じ処理がループの外にある | 「Excelを閉じる」をループ内に移動 |
| 処理対象外のファイル(例:CSV)まで開く | フォルダー内にExcel以外のファイルがある | 条件分岐で「.xlsx」だけ処理するように設定 |
④テンプレートExcelを自動でコピー・保存するフロー
1. テンプレートファイルを準備
まず、Power Automate Desktopで使用するExcelテンプレートを用意しましょう。
📄 テンプレートファイル例:
ファイル名:請求書_テンプレート.xlsx
保存場所:
C:\Users\あなたの名前\Documents\テンプレート
中身はシンプルでOKです。
例:
| 請求日 | 顧客名 | 金額 | 担当者 |
|---|---|---|---|
| (自動入力予定) | (自動入力予定) | (自動入力予定) | (自動入力予定) |
2. フロー全体の考え方
この自動化の流れは次のとおり👇
- テンプレートファイルのパスを指定
- 新しいファイル名(例:請求書_2025-10-21.xlsx)を作成
- テンプレートをコピーして新しいファイルを生成
- 必要ならExcelを開いてデータを書き込み
- 保存して閉じる
これが理解できれば、どんな「日付付き・顧客別」ファイルも自動で作れるようになります。
3. 実際の作成手順(詳細ステップ)
✅ ステップ1:新しいフローを作成
- Power Automate Desktopを起動
- 「+新しいフロー」をクリック
- 名前を「Excel自動生成」と入力して作成
✅ ステップ2:テンプレートファイルと保存先を指定
- 検索欄に「ファイル」と入力
- 「ファイルをコピー」アクションをドラッグ
- 「元のファイルパス」に以下を入力:
C:\Users\あなたの名前\Documents\テンプレート\請求書_テンプレート.xlsx
- 「コピー先のパス」には、一時的に固定名でもOKです(後ほど動的に変更します):
C:\Users\あなたの名前\Documents\出力\請求書_作成中.xlsx
✅ ステップ3:日付付きファイル名を作る(動的命名)
- 「現在の日付を取得」アクションを追加
- 出力変数名:
今日の日付 - 「変数を設定」アクションを追加し、
名前:保存ファイル名
値:
C:\Users\あなたの名前\Documents\出力\請求書_%FormatDateTime(今日の日付, 'yyyy-MM-dd')%.xlsx
👉 この1行で、
例:「請求書_2025-10-21.xlsx」 のように日付付きファイル名を自動生成できます。
✅ ステップ4:テンプレートをコピーして保存
- もう一度「ファイルをコピー」アクションを追加
- 「元のファイルパス」→ テンプレートファイル
- 「コピー先のパス」→
%保存ファイル名%
✅ これでテンプレートが自動的に複製され、
指定したフォルダに新しいファイルとして保存されます。
✅ ステップ5:Excelを開いてデータを書き込む(任意)
ここからは任意の自動入力処理です。
今回は例として、請求日と担当者名を自動で書き込んでみましょう。
- 「Excelワークシートを起動」アクション
→ ドキュメントパスに%保存ファイル名%を入力
→ Excelインスタンス名:ExcelInstance - 「Excelに書き込み」アクションを追加
- セルA2 →%FormatDateTime(今日の日付, 'yyyy/MM/dd')%
- セルB2 →"佐藤商事"
- セルD2 →"担当:山田" - 「Excelを保存」アクション
- 「Excelを閉じる」アクション
4. 応用:ファイル名に顧客名を自動付与する
もしExcelや別のシステムから顧客名を取得しているなら、
ファイル名に自動で組み込むことも可能です。
例:
変数 顧客名 = "佐藤商事"
変数 保存ファイル名 = "C:\Users\あなたの名前\Documents\出力\請求書_" & 顧客名 & "_" & FormatDateTime(今日の日付, 'yyyy-MM-dd') & ".xlsx"
結果:
📄 請求書_佐藤商事_2025-10-21.xlsx が自動で生成されます!
5. よくあるトラブルと対処法
| トラブル | 原因 | 解決策 |
|---|---|---|
| 「ファイルが存在します」エラー | 同じ名前のファイルがある | コピー前に「ファイルが存在する場合削除」アクションを入れる |
| Excelが開かない | パスに全角文字やスペースがある | ダブルクォーテーションで囲む or 半角英数フォルダを使う |
| 日付が意図した形式で出ない | ロケール設定の違い | FormatDateTime(今日の日付, 'yyyy-MM-dd') を使うと安定 |
⑤指定セルへ自動入力するフロー
1. 事前準備(Excelファイルの作成)
デスクトップに次のようなExcelファイルを作っておきましょう。
📄 ファイル名:入力テスト.xlsx
📍 場所:
C:\Users\あなたの名前\Documents\入力テスト.xlsx
中身は次のような簡単な表でOKです👇
| 日付 | 顧客名 | 金額 |
|---|---|---|
| (ここに自動で入力) | (ここに自動で入力) | (ここに自動で入力) |
2. フロー全体の流れ
今回の自動化の処理は以下のとおり👇
- Excelを起動してファイルを開く
- 指定セル(例:A2, B2, C2)にデータを書き込む
- 保存して閉じる
ここで学ぶ「セル指定」「変数利用」「保存処理」は、あらゆるExcel自動化の基本になります。
3. 実際の手順(ステップごとに解説)
✅ ステップ1:新しいフローを作成
- Power Automate Desktopを開く
- 「+新しいフロー」をクリック
- フロー名に「Excelセル書き込み」と入力
- 作成ボタンを押します。
✅ ステップ2:Excelを起動してファイルを開く
- 検索欄に「Excel」と入力
- 「Excelワークシートを起動」アクションをドラッグ
- 設定欄で以下のように指定👇
- 「ドキュメントパス」 →
C:\Users\あなたの名前\Documents\入力テスト.xlsx - 「Excelインスタンスを保存する」 →
ExcelInstance
👉 これでPADがExcelを開いて操作できるようになります。
✅ ステップ3:セルに文字を書き込む
- 「Excelワークシートに書き込み」アクションを追加
- 各項目を以下のように設定👇
| 設定項目 | 入力例 |
|---|---|
| Excelインスタンス | ExcelInstance |
| 書き込むセル | A2 |
| 書き込む値 | %FormatDateTime(Now(), 'yyyy/MM/dd')% |
👉 A2セルに「今日の日付」を自動で入力します。
✅ ステップ4:別のセルに値を入力する
同じく「Excelに書き込み」アクションを追加していきます。
- セルB2 →
"株式会社サンプル商事" - セルC2 →
15000
これで、顧客名と金額も自動で入力されます。
✅ ステップ5:Excelを保存して閉じる
- 「Excelを保存」アクションを追加
→ Excelインスタンス:ExcelInstance - 「Excelを閉じる」アクションを追加
→ Excelインスタンス:ExcelInstance
これで、開く→入力→保存→閉じるの一連の動きが自動化されました!
4. 動的にセルを変える方法(変数応用)
ここからが応用テクです。
「毎回A2じゃなくて、データ数に応じて次の行に書きたい」場合は、変数を使いましょう。
💡 例:行番号を変数で指定
- 「変数を設定」アクションを追加
→ 変数名:行番号
→ 値:2 - 書き込みアクションのセル欄に次のように入力👇
"A" & 行番号
- 書き込み後に
行番号 = 行番号 + 1とすれば、
次のループで自動的に「A3」「A4」…と入力先が変わります。
👉 この仕組みが「行数が変わるデータに対応する基本構造」です!
5. よくあるトラブルと対処法
| トラブル内容 | 原因 | 解決策 |
|---|---|---|
| セルに値が書き込まれない | Excelが開かれていない | 「Excelを起動」アクションを最初に追加する |
| 書き込みセルの指定ミス | “A2”のように文字列にしないとエラー | "A2" のようにダブルクォーテーションで囲む |
| 数値が文字として扱われる | 書式設定の影響 | Excel側で列の書式を「数値」に変更 |
| ファイルが上書き保存されない | 保存処理の抜け | 「Excelを保存」を明示的に追加する |
⑥バックグラウンドでExcel更新!表示しないままデータを処理する方法
1. 事前準備(Excelファイルを用意)
まずは、実験用に以下のExcelファイルを準備します👇
📄 ファイル名:バックグラウンド更新テスト.xlsx
📍 保存場所:
C:\Users\あなたの名前\Documents\バックグラウンド更新テスト.xlsx
中身はこのような簡単な表でOKです:
| ID | 名前 | ステータス |
|---|---|---|
| 1 | 佐藤 | 未処理 |
| 2 | 鈴木 | 未処理 |
| 3 | 田中 | 未処理 |
今回は、この「ステータス」を自動で「完了」に変更して保存する流れを作ります。
2. フロー全体の概要
バックグラウンド更新の全体像は次のとおり👇
- Excelアプリを非表示で起動
- ファイルを開く
- 特定セル(例:C2〜C4)を更新
- 保存して閉じる
ここで大事なのは「Excelを表示せずに起動」設定です。
これにより、実際の画面を一切開かずに高速処理できます。
3. 実際の操作手順(詳細ステップ)
✅ ステップ1:新しいフローを作成
- Power Automate Desktopを起動
- 「+新しいフロー」をクリック
- フロー名を「Excelバックグラウンド更新」と入力して作成
✅ ステップ2:Excelを非表示で起動
- 左の検索欄に「Excel」と入力
- 「Excelワークシートを起動」アクションをドラッグ
- 以下のように設定します👇
| 設定項目 | 入力内容 |
|---|---|
| ドキュメントパス | C:\Users\あなたの名前\Documents\バックグラウンド更新テスト.xlsx |
| Excelを表示する | ✅ チェックを外す(ここが重要!) |
| Excelインスタンスを保存 | ExcelInstance |
👉 この設定で、Excelを画面に表示せずにバックグラウンドで起動できます。
✅ ステップ3:データを書き込む
- 「Excelワークシートに書き込み」アクションを追加
- 設定内容は次の通り👇
| 設定項目 | 入力内容 |
|---|---|
| Excelインスタンス | ExcelInstance |
| 書き込むセル | C2 |
| 書き込む値 | "完了" |
同様に、C3 と C4 にも「完了」と入力するアクションを追加しておきましょう。
💡ワンポイント
大量データの場合は、ループ処理(繰り返し)を使うと効率的です。
例:
各行に対して繰り返す → C列の値を順番に更新
✅ ステップ4:Excelを保存して閉じる
- 「Excelを保存」アクションを追加
→ Excelインスタンス:ExcelInstance - 「Excelを閉じる」アクションを追加
→ Excelインスタンス:ExcelInstance
→ 「Excelを強制終了する」はチェックしない(通常終了でOK)
✅ ステップ5:動作確認
- フローを実行
- Excelが開かないまま、数秒後に完了メッセージが表示されます。
- Excelファイルを手動で開くと…
| ID | 名前 | ステータス |
|---|---|---|
| 1 | 佐藤 | ✅完了 |
| 2 | 鈴木 | ✅完了 |
| 3 | 田中 | ✅完了 |
👉 これで「開かずに更新」が成功です!
4. 応用:複数セルをまとめて更新する
複数の値をまとめて更新したい場合は、「範囲に書き込み」アクションを使います。
🔹 手順例:
- 「Excelワークシートに範囲を書き込む」アクションを追加
- 書き込みセル範囲 →
C2:C4 - 書き込む値 →
["完了","完了","完了"]
👉 このように配列を指定すれば、3行分を一括更新できます。
または、ループ処理と変数を組み合わせて、動的にデータを入れることも可能です。
5. よくあるトラブルと解決策
| トラブル内容 | 原因 | 対策 |
|---|---|---|
| Excelが開いてしまう | 「Excelを表示する」にチェックが残っている | チェックを外す |
| ファイルがロックされる | 同名のExcelが既に開いている | 実行前にExcelをすべて閉じる or 強制終了設定をON |
| 値が書き込まれない | Excelが保護モードで開かれている | ファイルを信頼済みフォルダに置く |
| 実行速度が遅い | 範囲ごと書き込まずに1セルずつ処理している | 「範囲書き込み」か「配列変数」でまとめて処理 |
⑦Excelの内容を自動でOutlookメールに挿入する方法
1. 事前準備(ExcelとOutlook)
まず、練習用のExcelファイルを用意します👇
📄 ファイル名:日次売上.xlsx
📍 保存場所:
C:\Users\あなたの名前\Documents\日次売上.xlsx
中身はこんな感じでOKです👇
| 店舗名 | 売上金額 | 担当者 |
|---|---|---|
| 東京店 | 150000 | 佐藤 |
| 名古屋店 | 132000 | 鈴木 |
| 大阪店 | 98000 | 田中 |
このデータを、メール本文に自動で転記します。
2. フロー全体の概要
フローの構成は次のとおり👇
- Excelを開いてデータを読み取る
- 読み取ったデータを整形(表形式のテキストに変換)
- Outlookでメールを作成
- 本文にデータを挿入して自動送信
ここでのポイントは、「Excelデータを1つの文字列に変換して本文に貼り付ける」 こと。
この変数変換ができると、応用の幅が一気に広がります!
3. 実際の操作手順(詳細ステップ)
✅ ステップ1:新しいフローを作成
- Power Automate Desktopを起動
- 「+新しいフロー」→ フロー名を「Excelメール自動転記」と入力して作成
✅ ステップ2:Excelデータを読み取る
- 検索欄に「Excel」と入力
- 「Excelワークシートを起動」アクションを追加
→ ドキュメントパス:
C:\Users\あなたの名前\Documents\日次売上.xlsx
→ Excelインスタンス名:ExcelInstance - 「Excelワークシートから範囲を読み取る」アクションを追加
→ Excelインスタンス:ExcelInstance
→ 範囲:空欄(自動で使用範囲を取得)
→ 出力変数名:売上データ - 「Excelを閉じる」アクションを追加
→ Excelインスタンス:ExcelInstance
→ 変更を保存する:オン
✅ ステップ3:データを文字列に整形する
このままでは 売上データ は「テーブル形式(リストのリスト)」です。
そのため、ループを使って本文用のテキストを作ります。
- 「変数を設定」アクションを追加
→ 変数名:メール本文
→ 値:"【本日の売上一覧】" & vbCrLf & vbCrLf - 「各項目に対して繰り返す」アクションを追加
→ リスト:売上データ
→ 現在の項目:行 - ループ内に「変数に追加」アクションを追加
→ 変数:メール本文
→ 値:
行[0] & ":" & 行[1] & "円(担当:" & 行[2] & ")" & vbCrLf
👉 これで、
東京店:150000円(担当:佐藤)
名古屋店:132000円(担当:鈴木)
大阪店:98000円(担当:田中)
という形式のテキストが メール本文 に生成されます。
✅ ステップ4:Outlookメールを作成
- 検索欄に「Outlook」と入力
- 「新しいメールメッセージを作成」アクションを追加
→ 送信先:"team@example.com"(自分のメールでテスト可)
→ 件名:"【自動送信】本日の売上報告"
→ 本文:%メール本文%
→ メールアカウント:既定のOutlookアカウント - 「メールメッセージを送信」アクションを追加
これで、Excelのデータを本文に自動で転記し、送信できるフローが完成です🎉
4. 応用:複数行データをHTML形式で送信(表形式メール)
見た目をもっと整えたい場合は、HTML形式でメールを送ることもできます。
例:HTMLテーブルに変換して送信
- 「変数を設定」アクションで次を作成👇
<html><body>
<h3>本日の売上一覧</h3>
<table border='1' cellspacing='0' cellpadding='5'>
<tr><th>店舗名</th><th>売上金額</th><th>担当者</th></tr>
</html>
- 繰り返しアクションの中で次を追加👇
"<tr><td>" & 行[0] & "</td><td>" & 行[1] & "</td><td>" & 行[2] & "</td></tr>"
- ループ後に
"</table></body></html>"を追加して完成。 - 「メール本文」に
%HTML本文%を指定し、
「HTML形式で送信」にチェックを入れる。
これで、表付きの見やすい報告メールが自動で送信されます📬✨
5. よくあるエラーと対処法
| トラブル | 原因 | 対処法 |
|---|---|---|
| Outlookが起動していない | PADは既定アカウントを使用 | Outlookを一度手動で開いておく |
| メール本文が改行されない | vbCrLfの使い忘れ | 改行は vbCrLf を必ず使用 |
| Excelデータが途中で切れる | 空白行が含まれている | 「使用範囲を読み取る」を使う or 空白行を削除 |
⑧Excelの値をWeb画面に自動転記する実用フロー
1. 準備:ExcelとWebフォーム
📄 Excelファイルを用意
ファイル名:顧客入力データ.xlsx
場所:
C:\Users\あなたの名前\Documents\顧客入力データ.xlsx
中身は以下のようにします👇
| 氏名 | メールアドレス | 都道府県 | 備考 |
|---|---|---|---|
| 佐藤太郎 | sato@example.com | 東京都 | 新規登録 |
| 鈴木花子 | suzuki@example.com | 大阪府 | 更新依頼 |
このExcelの内容を、Webフォームに自動で入力する流れを作ります。
🌐 Webフォームの例(イメージ)
今回は次のようなフォームを想定します👇
- 名前入力欄
- メールアドレス入力欄
- 都道府県選択欄
- 備考入力欄
- 「送信」ボタン
※ 実際のサイトにアクセスする場合は、自社フォームなど権限のあるものを使用してください。
2. フロー全体の構成
自動化の流れは次のようになります👇
- Excelファイルを開いてデータを読み取る
- Webブラウザ(例:Edge)を起動
- Excelの各行データをループで処理
- Webフォームに自動で入力
- 送信ボタンをクリック
- 次の行へ繰り返し
3. 実際の操作手順(完全ステップ解説)
✅ ステップ1:新しいフローを作成
- Power Automate Desktopを起動
- 「+新しいフロー」→ フロー名を「ExcelWeb入力」と入力
- 作成をクリック
✅ ステップ2:Excelを開いてデータを読み取る
- 「Excelワークシートを起動」アクションを追加
→ ドキュメントパス:
C:\Users\あなたの名前\Documents\顧客入力データ.xlsx
→ Excelインスタンス名:ExcelInstance - 「Excelワークシートから範囲を読み取る」アクションを追加
→ Excelインスタンス:ExcelInstance
→ 範囲:空欄(自動で使用範囲を取得)
→ 出力変数名:顧客データ - 「Excelを閉じる」アクションを追加
→ Excelインスタンス:ExcelInstance
✅ ステップ3:ブラウザを起動してWebページを開く
- 検索欄に「ブラウザー」と入力
- 「新しいMicrosoft Edgeを起動」アクションを追加
→ URL:あなたのWebフォームのURLを入力
→ 出力変数名:Browser
例:
https://example.com/form/
✅ ステップ4:Webフォーム入力処理をループで行う
- 「各項目に対して繰り返す」アクションを追加
→ リスト:顧客データ
→ 現在の項目を保存する変数名:行 - ループの中に、以下のアクションを順番に入れます👇
🔹 名前を入力
- アクション:「UI要素にテキストを入力」
- テキスト:
行[0](1列目の氏名) - 対象UI要素:フォームの“名前入力欄”を指定
🔹 メールアドレスを入力
- 「UI要素にテキストを入力」
- テキスト:
行[1](2列目のメール) - 対象UI要素:メール欄をクリックして指定
🔹 都道府県を選択
- 「UI要素をクリック」アクション
- 対象:都道府県のドロップダウン
- 続けて「UI要素をクリック」アクションで該当都道府県を選択
→ 値:行[2]
🔹 備考欄を入力
- 「UI要素にテキストを入力」
- テキスト:
行[3]
🔹 送信ボタンをクリック
- 「UI要素をクリック」アクション
- 対象:送信ボタン
👉 これで、1件分のデータが自動入力&送信されます。
✅ ステップ5:入力完了後に次の行へ
ループ処理により、次の行(2人目、3人目)へ自動で繰り返します。
数十件〜数百件の入力でも、ボタンひとつで完了します。
4. 応用:入力エラーを検知してスキップ
Web側で入力エラーが出た場合でも、フローを止めたくない場合は次のように設定👇
- 「例外処理」アクションを使い、
→ 入力アクションをTryに入れる - 「キャッチ」側で「メッセージをログに記録」などを追加し、
→ 問題があっても次の行に進むようにする
💡これにより、エラーが出ても全体の処理は継続できます。
5. よくあるトラブルと対処法
| トラブル | 原因 | 対策 |
|---|---|---|
| UI要素が見つからない | Webページ構造が変わった | UI要素を再キャプチャする |
| フォーム入力が途中で止まる | ロード待ちがない | 「待機」アクションを追加(例:2秒) |
| 送信後に次の入力が重なる | ページ遷移タイミング | 「ページが読み込まれるまで待機」を設定 |
| Excelの値が空白で入力される | Excel内に空セル | 条件分岐で空白行をスキップ |
⑨Excel→CSV自動変換フローの作り方
1. 準備:Excelファイルの用意
まずは、CSVに変換したいExcelファイルを用意します👇
📄 ファイル名:売上データ.xlsx
📍 保存場所:
C:\Users\あなたの名前\Documents\売上データ.xlsx
内容は簡単でOKです👇
| 日付 | 商品名 | 金額 |
|---|---|---|
| 2025/10/21 | A商品 | 1500 |
| 2025/10/21 | B商品 | 2300 |
| 2025/10/21 | C商品 | 1800 |
2. フロー全体の概要
今回作成する自動化フローは、次のような流れになります👇
- Excelをバックグラウンドで起動
- 対象ファイルを開く
- 「名前を付けて保存」でCSV形式を指定
- CSVファイルを保存
- Excelを閉じる
この流れを1クリックで実行できるようにすれば、
毎日の出力作業が完全自動化できます。
3. 実際の操作手順(詳細ステップ)
✅ ステップ1:新しいフローを作成
- Power Automate Desktopを起動
- 「+新しいフロー」→ フロー名を「Excel→CSV変換」と入力
- 作成をクリック
✅ ステップ2:Excelをバックグラウンドで起動
- アクション検索欄に「Excel」と入力
- 「Excelワークシートを起動」アクションを追加
- 設定内容👇
| 項目 | 入力内容 |
|---|---|
| ドキュメントパス | C:\Users\あなたの名前\Documents\売上データ.xlsx |
| Excelを表示する | ✅ チェックを外す(非表示で起動) |
| Excelインスタンスを保存 | ExcelInstance |
👉 Excelが画面に表示されずにバックグラウンドで起動します。
✅ ステップ3:「名前を付けて保存」でCSV出力
- 「Excelワークシートを別名で保存」アクションを追加
- 以下のように設定👇
| 項目 | 入力内容 |
|---|---|
| Excelインスタンス | ExcelInstance |
| 保存先のファイルパス | C:\Users\あなたの名前\Documents\売上データ.csv |
| ファイル形式 | CSV UTF-8 (コンマ区切り) |
💡ファイル形式の選択肢に「CSV UTF-8」がない場合は、
「ファイル形式」欄に "CSV" と直接入力してもOKです。
✅ ステップ4:Excelを閉じる
- 「Excelを閉じる」アクションを追加
- Excelインスタンス:
ExcelInstance - 「変更を保存する」はチェック不要(すでにCSV保存済み)
これでExcelファイルを閉じて処理が完了します。
✅ ステップ5:動作確認
- フローを保存して「▶実行」
- 数秒後に、指定フォルダ内に
売上データ.csvが自動生成されます。 - CSVを開くと、次のような形式で保存されていれば成功です👇
日付,商品名,金額
2025/10/21,A商品,1500
2025/10/21,B商品,2300
2025/10/21,C商品,1800
4. 応用:複数ファイルを一括変換する方法
フォルダ内に複数のExcelファイルがある場合は、
「フォルダー内のファイルを取得」+「繰り返し」アクションを組み合わせて
すべて自動でCSV変換できます。
🔹 フロー構成例:
- 「フォルダー内のファイルを取得」
→ 出力変数:Excel一覧 - 「各項目に対して繰り返す」
→ リスト:Excel一覧
→ 現在の項目変数:現在のファイル - Excelを開く → 別名で保存(
.csvに変更) → 閉じる
🔹 保存先ファイル名(動的指定):
変数 保存先 = Replace(現在のファイル['Path'], ".xlsx", ".csv")
このようにすれば、どんなファイル名でも自動で.csvに変換できます💡
5. よくあるトラブルと対処法
| トラブル | 原因 | 対処法 |
|---|---|---|
| 「ファイル形式が無効です」 | 保存形式の指定ミス | "CSV" または "CSV UTF-8" に変更 |
| CSVファイルが文字化け | Excelのエンコード設定 | 「CSV UTF-8 (コンマ区切り)」を選択 |
| Excelが閉じずに残る | 閉じるアクション漏れ | 「Excelを閉じる」をループ内の最後に置く |
| ファイルが上書きされない | 同名CSVが存在 | 「ファイルを削除」→「別名で保存」で解決 |
⑩実行ログをExcelに自動記録して管理する方法
1. ログを保存するExcelの準備
まず、ログを保存する専用のExcelファイルを作成します👇
📄 ファイル名:実行ログ.xlsx
📍 保存場所:
C:\Users\あなたの名前\Documents\実行ログ.xlsx
中身は次のようにヘッダー行だけ準備しておきます👇
| 実行日時 | 処理内容 | 対象ファイル | 結果 | メッセージ |
|---|---|---|---|---|
| (自動記録予定) | (自動記録予定) | (自動記録予定) | (自動記録予定) | (自動記録予定) |
このファイルに、PADのフローが実行されるたびに
1行ずつ自動で記録されるように設定します。
2. フロー全体の構成
今回作成する自動化フローは次のような構成になります👇
1️⃣ 現在の日時を取得
2️⃣ 処理したいファイル名などを変数に設定
3️⃣ 処理結果を変数に記録
4️⃣ Excel(ログファイル)を開く
5️⃣ 次の空行を検出
6️⃣ 1行分のログを書き込む
7️⃣ 保存して閉じる
3. 実際の操作手順(詳細ステップ)
✅ ステップ1:新しいフローを作成
- Power Automate Desktopを起動
- 「+新しいフロー」→ 名前を「操作ログ記録フロー」に設定
- 作成をクリック
✅ ステップ2:現在日時と処理内容を変数に格納
- 「現在の日付を取得」アクションを追加
→ 変数名:現在日時 - 「変数を設定」アクションを追加
→ 名前:処理内容
→ 値:"請求書ファイル自動生成" - 「変数を設定」アクションを追加
→ 名前:対象ファイル
→ 値:"C:\Users\あなたの名前\Documents\請求書_2025-10-21.xlsx"
✅ ステップ3:結果を設定(仮で成功とする)
- 「変数を設定」アクションを追加
→ 名前:結果
→ 値:"成功" - 「変数を設定」アクションを追加
→ 名前:メッセージ
→ 値:"正常に完了しました"
(後でこの部分を「エラー発生時に失敗へ変更」できるようにします。)
✅ ステップ4:Excel(ログファイル)を開く
- 「Excelワークシートを起動」アクションを追加
→ ドキュメントパス:
C:\Users\あなたの名前\Documents\実行ログ.xlsx
→ Excelインスタンス名:ExcelLog - 「Excelワークシートから範囲を読み取る」アクションを追加
→ Excelインスタンス:ExcelLog
→ 範囲:空欄(全体を読み取る)
→ 出力変数:LogData
✅ ステップ5:次の空行を検出
- 「変数を設定」アクションを追加
→ 名前:次の行番号
→ 値:Length(LogData) + 2
💡理由:
1行目はヘッダーなので、2行目からデータが入るためです。
✅ ステップ6:ログ内容を書き込む
次の5つの「Excelワークシートに書き込み」アクションを追加👇
| セル | 書き込む内容 |
|---|---|
"A" & 次の行番号 | %FormatDateTime(現在日時,"yyyy/MM/dd HH:mm:ss")% |
"B" & 次の行番号 | %処理内容% |
"C" & 次の行番号 | %対象ファイル% |
"D" & 次の行番号 | %結果% |
"E" & 次の行番号 | %メッセージ% |
これで、実行内容がExcelに1行追記されるようになります。
✅ ステップ7:Excelを保存して閉じる
- 「Excelを保存」アクションを追加
→ Excelインスタンス:ExcelLog - 「Excelを閉じる」アクションを追加
→ Excelインスタンス:ExcelLog
✅ ステップ8:テスト実行
フローを実行してみましょう。
実行後に 実行ログ.xlsx を開くと、次のように自動記録されていれば成功です👇
| 実行日時 | 処理内容 | 対象ファイル | 結果 | メッセージ |
|---|---|---|---|---|
| 2025/10/21 10:35 | 請求書ファイル自動生成 | C:\Users\あなたの名前\Documents\請求書_2025-10-21.xlsx | 成功 | 正常に完了しました |
4. 応用:エラー発生時のログ記録
もし処理中にエラーが出ても止まらずにログを残したい場合は、
「サブフロー」+「エラー処理」を組み合わせます👇
🔹 手順例:
- メイン処理を「Try」ブロックにまとめる
- 「Catch」ブロックに次を設定:
-結果 = "失敗"
-メッセージ = %Exception.Message% - 最後に「ログ書き込みサブフロー」を呼び出す
👉 こうしておけば、成功・失敗を問わず必ずログが残ります。
5. よくあるトラブルと対処法
| トラブル | 原因 | 対処法 |
|---|---|---|
| ログが上書きされてしまう | セル位置を固定している | 「次の行番号」を使って動的指定にする |
| Excelが閉じずに残る | フロー中断時に終了していない | 最後に必ず「Excelを閉じる」を入れる |
| ログの日時がずれる | システム時刻の違い | FormatDateTimeで形式を統一 |
| 複数ユーザーが同時実行 | ファイルロック | ファイル共有フォルダを避け、個別ログを出力する |
