akira6592さんが作成されたPowershellスクリプトが自分が使用している環境で使えるか動作検証してみた。
複数Excelファイルの各シートのフォーカスをA1に、表示倍率を100%に統一するPowerShell
非常に便利なのでスクリプトでおすすめです!!
--
0.今回の動作検証について
今回、動作検証を実施した環境は以下のとおり。
Category | Value |
---|---|
OS | Windows7 Professional |
PS | 2.0 |
Excel | Microsoft Excel 2010 |
--
1.スクリプト設計
akira6592さんが作成されたコードをベースとする。
但し、今回は処理過程が可視化できるように $excel.Visible
のパラメータ値を $true
に変更した。
ベースにしたソースコードについては、下記を参照ください。
複数Excelファイルの各シートのフォーカスをA1に、表示倍率を100%に統一するPowerShell
私が使用したソースコードは下記。
test.ps1
# カレントにて処理対象ファイル(xlsx)を取得
$targetFiles = Get-ChildItem -Path *.xlsx
# Excelオブジェクト作成
$excel = New-Object -ComObject Excel.Application
# 処理経過を可視化(非表示にする場合は、$falseを指定する)
$excel.Visible = $true
# 処理ループ
foreach ($file in $targetFiles) {
# Excelオープン
$book = $excel.Workbooks.Open($file.FullName)
# シートのループ処理
foreach ($WorkSheet in $excel.Worksheets) {
# 非表示シートは対象外
if ($WorkSheet.Visible -ne $false) {
# 処理対象のシートを選択状態にする
$WorkSheet.Activate()
# セル「A1」を選択状態にする
$WorkSheet.Cells.Item(1,1).Select() | Out-Null
# 表示倍率を100%にする
$excel.ActiveWindow.Zoom = 100
}
}
# 一番左のシートを選択状態にする(おまけ)
$excel.Worksheets.Item(1).Activate()
# 上書き保存する
$book.save()
$book.close()
}
# 閉じる
$excel.Quit()
# プロセスを解放する
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
Remove-Variable excel
--
2.検証方法
複数Excelファイルの各シートのフォーカスをA1に、表示倍率を100%に統一するPowerShellに記載されている方法で実施した。
--
3.検証結果
複数Excelファイルの各シートのフォーカスをA1に、表示倍率を100%に統一するPowerShellで記載されていたバージョンよりも
古いバージョンにて検証を実施したが問題なく動作した。
--
4.まとめ
ドキュメント作成時のフォーマット確認作業が自動化できるため、非常に有効なツールと言える。
WordやPowerPointなどへの応用もできるため、今後試してみたい。
最後に、akira6592さん、非常に参考になる記事の投稿ありがとうございます。