Excel - シート一覧 - PowerShell


 クラウディア


1. 概要
2. 操作
3. 参考サイト

1. 概要

 前ページでは、大量のシートが存在する、ブック内で、シート間を簡単に移動する方法について記述しましたが。  シートの一覧が欲しいとき、どうするか・・・。  「PowerShell」を使用する方法があります。  実は、これ、面倒なので、あまりお勧めではありません。

2. 操作

 まず、この操作を行う場合は、対象の「Excel」ファイルは閉じておいてください。  その上で、「PowerShell」を起動して、下記のコマンドを実行します。  (ドライブ名、パス、ファイル名は実際のものをいれます)

$path = "C:\パス\ファイル名.xlsx"

[System.Reflection.Assembly]::LoadWithPartialName("System.IO.Compression") | Out-Null
$stream = [System.IO.File]::OpenRead($path)
$archive = New-Object System.IO.Compression.ZipArchive($stream)
$entry = $archive.Entries | Where-Object { $_.FullName -eq "xl/workbook.xml" }
$entryStream = $entry.Open()
$reader = New-Object System.IO.StreamReader($entryStream)
$xmlText = $reader.ReadToEnd()
$reader.Close(); $entryStream.Close(); $archive.Dispose(); $stream.Close()
[regex]::Matches($xmlText, 'name="([^"]+)"') | ForEach-Object { $_.Groups[1].Value }

 これ、なにをやっているかというと。  「Excel」の中身は、現在(2026年5月27日時点)、「.xml」になっています。  その「.xml」から、「name」属性を正規表現で全抽出しているようです。  なので、シート名以外に、「name」属性のあるものは出力されちゃいますので、ご注意。  出力されたものを、選択して、Enter すれば、クリップボードにとることができます。

3. 参考サイト

 本ページは、「Gemini」伍長を参考にさせていただきました。