PowerShellによりExcelのシートの並び替えをするサンプルコード

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

PowerShellによりExcelのシートの並び替えをするサンプルコードを紹介します。

仕様

以下のようなサンプルファイルを用意します。

Book1.xlsx

うまくいけば、PowerShell実行後にシートがSheet1→Sheet2→Sheet3・・・Sheet6の並び順に変わります。

以下のキャプチャのイメージです

ソースコード

ソースはPowerShellで記述します。

SortExcelSheets.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)

# シート名の取得
$workArray = @()
foreach ($s in $book.sheets){
    $workArray+= $s.name
}

# シート名の並び替え(昇順)
$workArray = $workArray | Sort-Object

# シートの並び替え
# (1シート目)
$sheetCount = $book.worksheets.count
$book.worksheets($workArray[0]).Move($book.worksheets(1))
# (2シート目以降)
for( $i=2; $i -le $sheetCount;$i++){
    $book.worksheets($workArray[$i-1]).Move($book.worksheets($i))
}

[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

ちなみに降順にしたい場合は、Sort-Objectの部分にパラメータを追加すればよいです。

実行

実行手順

では上記のPowerShellを実行します。

実行は右クリックメニューの「PowerShellで実行」をクリックします。

実行結果

実行後、シートがSheet1→Sheet2→Sheet3・・・Sheet6の並び順に変わりました。

参考情報

環境

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

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

以上です。

コメント

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