← 手順一覧へ戻る
Power Automate DesktopExcel中級

Excelブックにシート名の一覧を作成する

既存シート名を取得し、重複しない目次シートを作って縦に並べます。

画面上の名前は、表示言語やバージョンによって異なる場合があります。Desktopの例は、フロー作成時に「Power Fx を有効にする」をオフにした標準構文です。Power Fx対応フローでは式・変数参照・インデックスの書き方が異なります。このページでは変数を %変数名% と表記します。出力変数の名前を入力する欄では、前後の % は付けません。

実行前に確認

  • Windows版ExcelがインストールされたPCで実行します。元ファイルのコピーで試してください。
  • シート名の取得は目次追加より前なので、目次自身を一覧へ含めません。この例は初回作成用で、既存の目次を更新するものではありません。

1使うアクション

  1. アクション 1Excel の起動
  2. アクション 2すべての Excel ワークシートを取得する
  3. アクション 3If
  4. アクション 4新しいワークシートを追加する目次がない場合の内側
  5. アクション 5アクティブな Excel ワークシートを設定する同じIf内
  6. アクション 6Excel ワークシートに書き込む見出しをA1へ
  7. アクション 7変数の設定WriteRow=2
  8. アクション 8For each同じIf内。SheetNamesを反復
  9. アクション 9Excel ワークシートに書き込むFor each内
  10. アクション 10変数を大きくするFor each内。ループのEnd、IfのEndの順に閉じる
  11. アクション 11Excel を閉じる

表で見る入力と処理結果

架空データ

売上・経費・集計の3シートから名前を取得し、新しい目次のA列へ縦に並べます。

Desktop:Excelブック/ワークシート
対象のExcelブック(%ExcelInstance%)/新規の目次シート

以下は手順に沿った期待値です。実際のPower Automate・Excel環境で実行して確認した結果ではありません。セルや行の着目箇所には「●」を付けています。

処理前:ブックのシート一覧

以下はセルの値ではなく、シートタブの並びです。この時点の3つの名前を%SheetNames%へ取得します。
順番シート名
1売上
2経費
3集計
↓ 処理する行・列/設定

目次追加前に%SheetNames%を取得し、「目次」を含まない場合だけ先頭へ追加。A1=シート名、%WriteRow%=2から%CurrentSheet%をA列へ書きます。

作成後:目次シートの内容

目次を明示的にアクティブにしてA1=シート名を記入。データ範囲A2:A4を表示しています。
行A:シート名
2● 売上
3● 経費
4● 集計

保存後:ブックのシート一覧

目次を先頭へ追加した想定例。元の売上・経費・集計シートは残ります。
順番シート名
1● 目次
2売上
3経費
4集計
結果の見方

目次のA2~A4に3つのシート名が入ります。目次を追加する前の一覧を使うため、目次自身は載りません。

  • 既に目次シートがある場合は追加も書き換えも行いません。この例は初回作成用です。
  • 対象ブックのコピーで試してから、保存を伴う実行を行ってください。

図で見る処理のイメージ

概念図

既存シート名を取得し、重複しない目次シートを作って縦に並べます。

  1. 元ブック

    売上/経費/集計

  2. 取得

    3つのシート名をリストへ

  3. 作成

    目次のA2から順に書く

  4. 保存

    目次/売上/経費/集計

結果の例

書き込む前に目次を明示的にアクティブ化します。

図は処理の流れを示した例です。実際の画面や実行結果ではありません。

設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。

2実際の設定内容

入力する値・操作手順を確認する5ステップの設定と確認方法
  1. 1

    対象ブックを開き %ExcelInstance% にします。すべてのExcelワークシートを取得するで %SheetNames% を取得します。

  2. 2

    Ifで %SheetNames% が「目次」を含まないと判定します。内側に「目次」を先頭へ追加し、目次シートを名前でアクティブにする処理を置きます。

  3. 3

    If内でA1に「シート名」を書き、変数の設定で %WriteRow% を数値2にします。

  4. 4

    同じIf内のFor eachで %SheetNames% の各要素を %CurrentSheet% に受け取り、目次のA列・%WriteRow% 行に書きます。続けてWriteRowを1増やします。

  5. 5

    For eachとIfをそれぞれEndで閉じた後、Excelを保存して閉じます。目次が既にある場合は何も書き換えない例です。

Microsoft公式ページで確認する