PowerShellによりExcelファイルのシートの色を変更するサンプルコード

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

PowerShellによりExcelファイルのシートの色を変更するサンプルコードを紹介します。

Web上で類似ソースが意外に見つからなかったので、VBAのサイトを見ていろいろ試しました。

仕様

以下のようなExcelファイルを用意して、PowerShellからシートの色を変えてみます。

なお、実装方法はいくつかあります。

IndexColorプロパティ版

IndexColorによりSheet1の色を設定します。

一番記述が簡単です。

たまにWeb上で出てくるサンプルもこの方法が多く、最も一般的な方法なのかと思われます。

ソースコード

setSheetColorColorIndex.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")

# ColorIndexによる指定(赤)
$sheet.Tab.ColorIndex = 3

[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

色を変える場合は以下のようなColorIndexの行の数字を変えます。

$sheet.Tab.ColorIndex = 3

ColorIndexの数字の一覧はGoogle検索したらMicrosoftの公式ページがヒットします。

上記ではColorIndex=3(赤色)のコードとなっています。

実行

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

実行すると以下のようにSheet1のシートが赤色になりました。

Colorプロパティ版(色名指定)

この方法は色名を英語で指定するだけで分かりやすいです。

ソースコード

setSheetColorColorName.ps1

Add-Type -AssemblyName System.Drawing

$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")

# Colorによる指定
$sheet.Tab.Color = [System.Drawing.Color]::Blue # 青

[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

色を変更したい場合は以下のような~::Blueの部分を別の色にすればよいです。

$sheet.Tab.Color = [System.Drawing.Color]::Blue # 青

一般的な色を示す英語であれば、直観的にできるかと思います。

実行

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

実行すると以下のようにSheet1のシートが青色になりました。

Colorプロパティ版(RGB)

細かい色の調整ができます。

ソースコード

setSheetColorColorRGB.ps1

Add-Type -AssemblyName System.Drawing

$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")

# Colorによる指定
$sheet.Tab.Color = [System.Drawing.Color]::FromArgb(0, 255, 0) # 緑

[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

この方法はRGBで細かい色指定ができます。

色を変えたい場合は、以下の指定の数字を微調整します。

$sheet.Tab.Color = [System.Drawing.Color]::FromArgb(0, 255, 0) # 緑

ただシート名の色の微調整がそこまで需要があるかなあ・・・

というのはあるので、話し合いで

「ColorIndexという一般的によく使われる色はあらかじめ定義されているので~このオレンジか緑で~」

みたいに決めたいところですけどね。

実行

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

実行すると以下のようにSheet1のシートが緑色になりました。

参考情報

環境

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

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

以上です。