Excelのシートの並び順を逆順にするPowerShellのサンプルコード

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

Excelのシートの並び順を逆順にするPowerShellのサンプルコードを作ってみました。

仕様

ローカルの任意の場所にps1ファイルと、Excelファイルを格納します。

Book1.xlsxを開くと、左から以下の順でシートが用意されています。

  • Sheet1
  • Sheet3
  • Sheet5
  • Sheet2
  • Sheet4
  • Sheet6

PowerShellを実行すると、以下のように元の順と逆順に入れ分かるようにします。

  • Sheet6
  • Sheet4
  • Sheet2
  • Sheet5
  • Sheet3
  • Sheet1

あくまで逆順であって、ソートじゃないことに注意

ソースコード

powershell本体と、PowerShellを実行するためのコマンドです。

コマンド

powershell -ExecutionPolicy RemoteSigned -File "ReserveSheet.ps1"

ReserveSheet.ps1

$excel = New-Object -ComObject Excel.Application
$book = $null

$excel.Visible = $false
$excel.DisplayAlerts = $false
$fileName  = "Book1.xlsx"
$filePath = (Convert-Path .) + "/" + $fileName

$book = $excel.Workbooks.Open($filePath)

# シート名取得(逆順)
$sheetCount = $book.worksheets.count
$workArray = @()
for( $i=0; $i -lt $sheetCount;$i++){
    $workArray += $book.sheets($sheetCount-$i).name
}

# シート入れ替え
for( $i=0; $i -le $workArray.Count-1;$i++){
    write-host("name:" + $workArray[$i] + " to position:" + ($i+1))
    $book.worksheets($workArray[$i]).Move($book.worksheets($i+1))
}

[void]$book.Save()
[void]$book.Close($false)
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($book)|Out-Null
[void]$excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)|Out-Null

Pause

実行

実行手順

Windows PowerShellのターミナルを開き、ReserveSheet.ps1を実行するコマンドを打ちます。

実行結果

実行すると以下のようにシートが逆順になっています。

参考情報

環境

下記の環境で作成・実行しております。

No.環境バージョン
1OSWindows11
2PowerShell5.1
環境一覧

以上です。