はじめに
参画プロジェクトによっては、求められることのある納品時の面倒な作業をダブルクリックで済むようにしました。
Qiitaで既出のA1セルで表示倍率100%以外にも必要な要件があったので備忘録として投稿します。VBAでも良かったのですが実装と実行ともに手数が多い上に、サイズも大きくなってしまうので今回はPowerShellで操作するようにしています。
メモ帳とPowerShell実行環境があれば完結します。
概要
フォルダに格納された複数エクセルファイルのすべてのシートに対して下記の処理を実行します。
・グループ化機能で設定した非表示セルの再表示
・フィルターの絞り込み結果のクリア(全表示)
・表示倍率を100%に設定
・A1セルを選択
・変更の保存
1. 処理の実装(PowerShell)
deliverablesPreparation.ps1
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $true
$Excel.DisplayAlerts = $false
$folderPath = Get-Location
$files = Get-ChildItem -Path $folderPath -Filter "*.xlsx"
foreach($file in $files) {
$workbook = $Excel.Workbooks.Open($file.FullName)
foreach($worksheet in $workbook.Sheets) {
$worksheet.Rows.Hidden = $false
$worksheet.Columns.Hidden = $false
if($worksheet.AutoFilterMode) {
$worksheet.AutoFilter.ShowAllData()
}
$worksheet.Activate()
$Excel.ActiveWindow.Zoom = 100
$worksheet.Range("A1").Select()
}
$sheetOne = $workbook.Sheets.Item(1)
$sheetOne.Select()
$sheetOne.Range("A1").Select()
$workbook.Close($true)
}
$Excel.Quit()
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($Excel) | Out-Null
2. 実行ファイル作成(bat)
エクセル仕上げ.bat
powershell -NoProfile -ExecutionPolicy Unrestricted ./deliverablesPreparation.ps1
exit
3. 実行方法
①下記3種類のファイルを同じフォルダに格納する。
・実行対象のエクセルファイル.xlsx
・deliverablesPreparation.ps1
・エクセル仕上げ.bat
②エクセル仕上げ.batをダブルクリック
③エクセルファイルがすべて閉じられたら処理完了
ご活用の際は自己責任でお願いします。