Excelのセルのフォント名(フォントファミリー)を変更するPowerShellのサンプルコードを紹介します。
仕様
ローカルの任意の場所にPowerShellの*.ps1ファイルと、フォント名を変更する対象のExcelファイルを格納します。
Book1.xlsxの中のA列の文字列のフォント名を変更してみます。比較用にB列にも同じものをコピペしておきます。
実行後のフォント名はどれでもいいのですが、Windows環境でよく使用しそうなフォント名に変更させます。
セル位置 | 実行前 | 実行後 |
---|---|---|
A1 | 游ゴシック | MS Pゴシック |
A2 | 游ゴシック | MS ゴシック |
A3 | 游ゴシック | MS 明朝 |
A4 | 游ゴシック | メイリオ |
A5 | 游ゴシック | 游ゴシック |
ソースコード
コマンド
powershell -ExecutionPolicy RemoteSigned -File "setExcelFontName.ps1"
setExcelFontName.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)
$sheet = $book.Sheets("Sheet1")
$cell = $sheet.Cells(1,1)
$cell.font.Name = "MS Pゴシック"
$cell = $sheet.Cells(2,1)
$cell.font.Name = "MS ゴシック"
$cell = $sheet.Cells(3,1)
$cell.font.Name = "MS 明朝"
$cell = $sheet.Cells(4,1)
$cell.font.Name = "メイリオ"
$cell = $sheet.Cells(5,1)
$cell.font.Name = "游ゴシック"
[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
実行
実行手順
Windows PowerShellのターミナルからsetExcelFontName.ps1を実行するコマンドを打ちます。
実行結果
以下の通り、A列のフォント名が変わりました。
ぱっと見でも分かりますが、想定通りフォント名が変わったか確認しました。
各セルにフォーカスを当ててみますが、確かに変更されています。
参考情報
環境
下記の環境で作成・実行しております。
No. | 環境 | バージョン |
---|---|---|
1 | OS | Windows11 |
2 | PowerShell | 5.1 |
以上です。
コメント