ソフトウェア開発 / PowerShell / ExcelHelper
# ----------------------------------------------------------
# 定数定義
# ----------------------------------------------------------
$EXCEL_EDGE_LEFT = 7
$EXCEL_EDGE_TOP = 8
$EXCEL_EDGE_BOTTOM = 9
$EXCEL_EDGE_RIGHT = 10
$EXCEL_CONTINUOUS = 1
$EXCEL_THIN = 2
# ----------------------------------------------------------
# 新しい Excel Application オブジェクトを構築します。
# ----------------------------------------------------------
function New-ExcelApplication {
$excel = New-Object -ComObject Excel.Application
return $excel
}
# ----------------------------------------------------------
# COM オブジェクトをメモリーから解放します。
# ----------------------------------------------------------
function Release-ExcelComObjectSafely {
param (
$ComObject
)
if ($null -eq $ComObject) {
return
}
try {
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($ComObject) | Out-Null
} catch {
Write-Warning "COM オブジェクトの解放に失敗しました。:$_"
}
}
# ----------------------------------------------------------
# 新しいブックを作成します。
# ----------------------------------------------------------
function Add-ExcelWorkbook {
param (
$Excel
)
return $Excel.Workbooks.Add()
}
# ----------------------------------------------------------
# 最初のワークシートを取得します。
# ----------------------------------------------------------
function Get-ExcelFirstWorksheet {
param (
$Workbook
)
return $Workbook.Worksheets.Item(1)
}
# ----------------------------------------------------------
# 最後のワークシートを取得します。
# ----------------------------------------------------------
function Get-ExcelLastWorksheet {
param (
$Workbook
)
$lastIndex = $Workbook.Workbooks.Count
return $Workbook.Worksheets.Item($lastIndex)
}
# ----------------------------------------------------------
# セルの外枠に罫線を引きます。
# ----------------------------------------------------------
function Draw-ExcelOuterBorder {
param (
$Range
)
foreach ($bordersIndex in @($EXCEL_EDGE_LEFT, $EXCEL_EDGE_TOP, $EXCEL_EDGE_BOTTOM, $EXCEL_EDGE_RIGHT)) {
$border = $Range.Borders.Item($bordersIndex)
$border.LineStyle = $EXCEL_CONTINUOUS
$border.Weight = $EXCEL_THIN
Release-ExcelComObjectSafely $border
}
}
# ----------------------------------------------------------
# セルの背景に色を塗ります。
# ----------------------------------------------------------
function Set-ExcelCellBackgroundColor {
param (
$Range
,$Color
)
$Range.Interior.Color = $Color
}
# ----------------------------------------------------------
# Excel の表示状態をリセットします。
# ----------------------------------------------------------
function Reset-ExcelViewState {
param (
$Workbook
)
foreach ($worksheet in $Workbook.Worksheets) {
$worksheet.Activate() | Out-Null
$worksheet.Range("A1").Select() | Out-Null
Release-ExcelComObjectSafely $worksheet
}
$Workbook.Worksheets.Item(1).Activate() | Out-Null
}