2015-06-16

PowerShellでExcelを操作する - フォントの操作編 -

PowerShellでは、Excelファイル(エクセル 拡張子xls、xlsx、xlsm等)を操作することもできます。

Excelファイルは、Officeソフトの中でも特に使用頻度が高く、業務で毎日使用しているという人も少なくないと思います。

そんな毎日使用するものだからこそ、定型業務をPowerShellで自動化していきましょう!!



Excel操作 7回目の今回は「PowerShellでExcelを操作する - フォントの操作編 -」です。

前回までは、Excelの起動から始まり、セルのコピーやら行の挿入やら色々とやってきました。
その中で、「文字列を指定したセルに入力する」こともやりました。

今回紹介するのは、その延長となります。


<前準備>

・C:\TESTフォルダ内に、AAA.xlsxのExcelファイルを作成しておいてください。
 AAA.xlsxの内容は空のままでOKです。


それでは早速、例文を記述していきます。



---------ここから-------------------------------------------------------------------------------------

# Excel操作 フォントの操作編


# Excelを操作する為の宣言
$excel = New-Object -ComObject Excel.Application

# 可視化しない
$excel.Visible = $false

# 既存のワークブックを開く場合
$book = $excel.Workbooks.Open("C:\TEST\AAA.xlsx")

# ワークシートを番号で指定し、接続する
$sheet = $excel.Worksheets.Item(1)

# 指定したセルに文字列を入力
$sheet.Cells.Item(2,3) = "PowerShellで作成"

# フォントサイズ
$sheet.cells.item(2,3).font.Size = 20

# フォント書式
$sheet.cells.item(2,3).font.Name = "MS 明朝"

# 太字
$sheet.cells.item(2,3).font.bold = $true

# 文字色の指定
$sheet.cells.item(2,3).font.ColorIndex = 3

# セルの塗りつぶし指定
$sheet.cells.item(2,3).interior.ColorIndex = 6

# 上書き保存
$Book.Save()

# Excelを閉じる
$excel.Quit()

# プロセスを解放する
$excel = $null
[GC]::Collect()

---------ここまで-------------------------------------------------------------------------------------

上記内容をコピーし、PowerShell ISEに貼り付けて、実行してみてください。

処理完了後、C:\TESTフォルダ内のAAA.xlsxを開くと、画像のように入力されると思います。


それでは1行ずつ解説していきます。
(コマンドが記述してある部分だけを数えて1行目、2行目…としています)


<解説>

◆1行目~5行目
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$book = $excel.Workbooks.Open("C:\TEST\AAA.xlsx")
$sheet = $excel.Worksheets.Item(1)
$sheet.Cells.Item(2,3) = "PowerShellで作成"

この5行についてはもはやお馴染みですね。
内容がわからない場合は【PowerShellでExcelを操作する - 基礎編 -】をご覧ください。


◆6行目
$sheet.cells.item(2,3).font.Size = 20

6行目では、 フォントサイズを指定しています。
サイズは1から409の範囲で指定します。(Excel2013の場合)


◆7行目
$sheet.cells.item(2,3).font.Name = "MS 明朝"

7行目ではフォント名を指定しています。
他にも「MS Pゴシック」や「メイリオ」などももちろん指定できます。


◆8行目
$sheet.cells.item(2,3).font.bold = $true

8行目では、フォントのスタイルに「太字」を適用しています。
「太字」以外にも下記のスタイルが適用できます。

   斜体
   $sheet.cells.item(1,1).font.Italic = $true

   取り消し線
   $sheet.cells.item(1,1).font.Strikethrough = $true

   上付き文字
   $sheet.cells.item(1,1).font.Superscript = $true

   下付き文字
   $sheet.cells.item(1,1).font.Subscript = $true

   影付き
   $sheet.cells.item(1,1).font.Shadow = $true


◆9行目・10行目
$sheet.cells.item(2,3).font.ColorIndex = 3
$sheet.cells.item(2,3).interior.ColorIndex = 6

9行目ではフォントの色を、10行目ではセルの塗りつぶし色を指定しています。
色は番号で指定し、その番号の色は下記の通りです。

   1 = 黒          7 = マゼンタ
   2 = 白          8 = シアン   
   3 = 赤          9 = 茶   
   4 = 明るい緑     10 = 緑   
   5 = 青         11 = 紺   
   6 = 明るい黄色   12 = うぐいす

なお、ここでは特定のセルのみが対象となっておりますが、範囲指定することも可能です。
範囲指定の場合は次のように記述します。
==================================================
<セル指定>
$sheet.cells.item(2,3).font.Size = 20

<範囲指定>
$sheet.Range("A1:B5").font.Size = 20
==================================================
このように、「$sheet.cells.item」の部分を「$sheet.Range」とし、( )内の記述をExcelでお馴染みのアルファベットと数字の組み合わせ方式にします。


◆11行目~14行目
$book.Save()
$excel.Quit() 
$excel = $null
[GC]::Collect()

この4行についても割愛させていただきます。
内容がわからない場合は【PowerShellでExcelを操作する - 基礎編 -】をご覧ください。



例文の解説は以上となります。

色の指定は範囲指定が可能ですが、当方で試したところ、フォントサイズやスタイルなどは範囲指定ができないようです。(下手なだけ?)

しかし、For文を使えば、ある程度であれば範囲指定も可能です。
使用例としては、あるフォルダ内のPDFファイルのファイル名をGet-ChildItemコマンドレットで全て取得し、ExcelファイルのA1から順に出力する。ファイル名出力と同時に、フォントの色を変える。などです。


=======================================================================
本投稿に関する疑問や質問には可能な限りお答えさせていただきます。
お気軽にコメントやメールをお送りください。
(リクエストも歓迎します)
メール:tkk-powershell@gmail.com
また、間違いのご指摘・アドバイス等も歓迎いたします。
=======================================================================
Google+、Twitterで更新情報をお届けしています!
ぜひフォローをお願い致します!           
=======================================================================
スポンサーリンク


0 件のコメント:

コメントを投稿

疑問・質問・リクエスト お気軽にどうぞ (^O^)/