PowerShellによりExcelを操作し、各シートの先頭に連番を振るサンプルコードを作成しました。
仕様
Excelファイルの各シートの先頭に、PowerShellから連番を振ります。
以下のようなサンプルファイルを用意します。
book.xlsx
PowerShell実行後、うまくいけば以下のようにシート名が変わります。
実行前のシート名
- A
- B
- C
- D
実行後のシート名
- 01_A
- 02_B
- 03_C
- 04_D
ソースコード
ソースはPowerShellで記述します。
addSheetNumberToExcelSheet.ps1
$excel = New-Object -ComObject Excel.Application
$book = $null
$excel.Visible = $false
$excel.DisplayAlerts = $false
$fileName = "book.xlsx"
$filePath = (Convert-Path .) + "\" + $fileName
$book = $excel.Workbooks.Open($filePath)
for ($i=1; $i -le $book.worksheets.Count; $i++){
$newSheetName = $i.ToString("00") + "_" + $book.worksheets($i).Name
$book.worksheets($i).Name = $newSheetName
}
[void]$book.Save()
[void]$book.Close($false)
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($book)
[void]$excel.Quit()
[void][System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
Pause
実行
実行手順
では上記のPowerShellを実行します。
実行は右クリックメニューの「PowerShellで実行」をクリックします。
実行結果
実行後、各シートのシート名の頭に連番が振られています。
PowerShellで実装するいいところは、ソースコードがExcelファイルに残りません。
VBAだとソースコードがExcelに紐づいて残ってしまいますね。
参考情報
環境
下記の環境で作成・実行しております。
No. | 環境 | バージョン |
---|---|---|
1 | OS | Windows10 |
2 | PowerShell | 5.1 |
以上です。
コメント