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

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

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

仕様

ローカルの任意の場所にPowerShellの*.ps1ファイルと、並び順を逆にする対象のExcelファイルを格納します。

Book1.xlsxを開くとSheet1,3,5,2,4,6のようにシートが用意されています。

PowerShellを実行した後に、Sheet6,4,2,5,3,1のように元の順と逆順に入れ替えます。

あくまで逆順であって、ソートじゃないですよ。

ソースコード

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を実行するコマンドを打ちます。

実行結果

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

ぜひ記事の上のほうにある実行前のキャプチャのシート順を見比べてみてください。


参考のために実行前後の比較結果を、一覧化してみました。

比較シート順
実行前Sheet1, Sheet3, Sheet5, Sheet2, Sheet4, Sheet6
実行後Sheet6, Sheet4, Sheet2, Sheet5, Sheet3, Sheet1
比較結果

参考情報

環境

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

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

以上です。

コメント

タイトルとURLをコピーしました