PowerShellによりExcelの各シートの先頭に連番を振るサンプルコード

PowerShell
記事内に広告が含まれています。

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.環境バージョン
1OSWindows10
2PowerShell5.1
環境一覧

以上です。