ソフトウェア開発 / PowerShell / ExcelHelper

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
}

トップ   一覧 検索 最終更新   ヘルプ   最終更新のRSS