|
次の事例を実行してみよう。
# Excel操作 罫線の操作編
# Excelを操作する為の宣言
$excel = New-Object -ComObject Excel.Application
# 可視化しない
$excel.Visible = $false
# 既存のワークブックを開く場合
$book = $excel.Workbooks.Open("F:\usr\PowerShell\sample_07\Test\PS-Test04.xlsx")
# ワークシートを番号で指定し、接続する
$sheet = $excel.Worksheets.Item(3)
# 指定したセルに文字列を入力
$sheet.Cells.Item(2,3) = "PowerShellで作成"
$sheet.Cells.Item(4,3) = "実線"
$sheet.Cells.Item(6,3) = "一点鎖線"
$sheet.Cells.Item(8,3) = "二点鎖線"
$sheet.Cells.Item(10,3) = "二重線"
$sheet.Cells.Item(12,3) = "斜線"
$sheet.Cells.Item(14,3) = "破線"
$sheet.Cells.Item(16,3) = "線なし"
$sheet.Cells.Item(20,3) = "極細"
$sheet.Cells.Item(22,3) = "細"
$sheet.Cells.Item(24,3) = "中"
$sheet.Cells.Item(26,3) = "太"
# 範囲指定
$sheet.Range("A1:C30").font.Size = 20
# ------< 二点鎖線 >----------
# 罫線を使用する前の宣言 (罫線の種類)
$LineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type]
# 罫線の種類を指定
$sheet.cells.item(2,3).borders.LineStyle = $LineStyle::xlDashDotDot
# 罫線を使用する前の宣言 (罫線の太さ)
$Weight = "microsoft.office.interop.excel.xlBorderWeight" -as [type]
# 罫線の太さを指定
$sheet.cells.item(2,3).borders.Weight = $Weight::xlMedium
# ------< 実線 >----------
# 罫線を使用する前の宣言 (罫線の種類)
$LineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type]
# 罫線の種類を指定
$sheet.cells.item(4,3).borders.LineStyle = $LineStyle::xlContinuous
# 罫線を使用する前の宣言 (罫線の太さ)
$Weight = "microsoft.office.interop.excel.xlBorderWeight" -as [type]
# 罫線の太さを指定
$sheet.cells.item(4,3).borders.Weight = $Weight::xlMedium
# ------< 一点鎖線 >----------
# 罫線を使用する前の宣言 (罫線の種類)
$LineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type]
# 罫線の種類を指定
$sheet.cells.item(6,3).borders.LineStyle = $LineStyle::xlDashDot
# 罫線を使用する前の宣言 (罫線の太さ)
$Weight = "microsoft.office.interop.excel.xlBorderWeight" -as [type]
# 罫線の太さを指定
$sheet.cells.item(6,3).borders.Weight = $Weight::xlMedium
# ------< 二点鎖線 >----------
# 罫線を使用する前の宣言 (罫線の種類)
$LineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type]
# 罫線の種類を指定
$sheet.cells.item(8,3).borders.LineStyle = $LineStyle::xlDashDotDot
# 罫線を使用する前の宣言 (罫線の太さ)
$Weight = "microsoft.office.interop.excel.xlBorderWeight" -as [type]
# 罫線の太さを指定
$sheet.cells.item(8,3).borders.Weight = $Weight::xlMedium
# ------< 二重線 >----------
# 罫線を使用する前の宣言 (罫線の種類)
$LineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type]
# 罫線の種類を指定
$sheet.cells.item(10,3).borders.LineStyle = $LineStyle::xlDouble
# 罫線を使用する前の宣言 (罫線の太さ)
$Weight = "microsoft.office.interop.excel.xlBorderWeight" -as [type]
# 罫線の太さを指定
$sheet.cells.item(10,3).borders.Weight = $Weight::xlMedium
# ------< 斜線 >----------
# 罫線を使用する前の宣言 (罫線の種類)
$LineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type]
# 罫線の種類を指定
$sheet.cells.item(12,3).borders.LineStyle = $LineStyle::xlSlantDashDot
# 罫線を使用する前の宣言 (罫線の太さ)
$Weight = "microsoft.office.interop.excel.xlBorderWeight" -as [type]
# 罫線の太さを指定
$sheet.cells.item(12,3).borders.Weight = $Weight::xlMedium
# ------< 破線 >----------
# 罫線を使用する前の宣言 (罫線の種類)
$LineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type]
# 罫線の種類を指定
$sheet.cells.item(14,3).borders.LineStyle = $LineStyle::xlDash
# 罫線を使用する前の宣言 (罫線の太さ)
$Weight = "microsoft.office.interop.excel.xlBorderWeight" -as [type]
# 罫線の太さを指定
$sheet.cells.item(14,3).borders.Weight = $Weight::xlMedium
# ------< 線なし >----------
# 罫線を使用する前の宣言 (罫線の種類)
$LineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type]
# 罫線の種類を指定
$sheet.cells.item(14,3).borders.LineStyle = $LineStyle::xlLineStyleNone
# 罫線を使用する前の宣言 (罫線の太さ)
$Weight = "microsoft.office.interop.excel.xlBorderWeight" -as [type]
# 罫線の太さを指定
$sheet.cells.item(14,3).borders.Weight = $Weight::xlMedium
# ------< 実線(極細) >----------
# 罫線を使用する前の宣言 (罫線の種類)
$LineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type]
# 罫線の種類を指定
$sheet.cells.item(20,3).borders.LineStyle = $LineStyle::xlContinuous
# 罫線を使用する前の宣言 (罫線の太さ)
$Weight = "microsoft.office.interop.excel.xlBorderWeight" -as [type]
# 罫線の太さを指定
$sheet.cells.item(20,3).borders.Weight = $Weight::xlHairline
# ------< 実線(細) >----------
# 罫線を使用する前の宣言 (罫線の種類)
$LineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type]
# 罫線の種類を指定
$sheet.cells.item(22,3).borders.LineStyle = $LineStyle::xlContinuous
# 罫線を使用する前の宣言 (罫線の太さ)
$Weight = "microsoft.office.interop.excel.xlBorderWeight" -as [type]
# 罫線の太さを指定
$sheet.cells.item(22,3).borders.Weight = $Weight::xlThin
# ------< 実線(中) >----------
# 罫線を使用する前の宣言 (罫線の種類)
$LineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type]
# 罫線の種類を指定
$sheet.cells.item(24,3).borders.LineStyle = $LineStyle::xlContinuous
# 罫線を使用する前の宣言 (罫線の太さ)
$Weight = "microsoft.office.interop.excel.xlBorderWeight" -as [type]
# 罫線の太さを指定
$sheet.cells.item(24,3).borders.Weight = $Weight::xlMedium
# ------< 実線(太) >----------
# 罫線を使用する前の宣言 (罫線の種類)
$LineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type]
# 罫線の種類を指定
$sheet.cells.item(26,3).borders.LineStyle = $LineStyle::xlContinuous
# 罫線を使用する前の宣言 (罫線の太さ)
$Weight = "microsoft.office.interop.excel.xlBorderWeight" -as [type]
# 罫線の太さを指定
$sheet.cells.item(26,3).borders.Weight = $Weight::xlThick
# 列幅を自動調整する
$range = $sheet.usedRange
$range.EntireColumn.AutoFit() | out-null
# 上書き保存
$Book.Save()
# Excelを閉じる
$excel.Quit()
# プロセスを解放する
$excel = $null
[GC]::Collect()
1〜9行は、前項までのと同じですので、省略します。
11〜23行で、指定したセルに文字列を入力します。
26行目で、.Range("A1:C30") のフォントサイズを指定します。
27〜145目で、罫線の色々指定しています。詳細はコメントを参照してください。
148〜149行で、列幅を自動調整します。
151〜157行は、前項までのと同じですので、省略します。
PS-Test04.xlsx を開いてみると下記のようにセルがコピーされています。

上記を実行すると
PowerShell 7.15 でも、正常(同様)に、実行されます。
ただし、utf-8 保存したファイル(.ps1)で、実行すること。
罫線を設定できない。
PowerShell 7.4.6 では、罫線の設定ができない。
緑色部のように、(pwd).Path + "\xxxx" で、フルパス指定できる。
OperationStopped: M:\usr\rehome10\PS\PS-Support\PS_Excel\017_PS-Excel_17.ps1:35
Line |
35 | $sheet.cells.item(2,3).borders.Weight = $Weight::xlMedium
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Borders NXÌ Weight vpeBðÝèūܹñB
OperationStopped: M:\usr\rehome10\PS\PS-Support\PS_Excel\017_PS-Excel_17.ps1:45
Line |
45 | $sheet.cells.item(4,3).borders.Weight = $Weight::xlMedium
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Borders NXÌ Weight vpeBðÝèūܹñB
OperationStopped: M:\usr\rehome10\PS\PS-Support\PS_Excel\017_PS-Excel_17.ps1:55
Line |
55 | $sheet.cells.item(6,3).borders.Weight = $Weight::xlMedium
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Borders NXÌ Weight vpeBðÝèūܹñB
OperationStopped: M:\usr\rehome10\PS\PS-Support\PS_Excel\017_PS-Excel_17.ps1:65
Line |
65 | $sheet.cells.item(8,3).borders.Weight = $Weight::xlMedium
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Borders NXÌ Weight vpeBðÝèūܹñB
OperationStopped: M:\usr\rehome10\PS\PS-Support\PS_Excel\017_PS-Excel_17.ps1:75
Line |
75 | $sheet.cells.item(10,3).borders.Weight = $Weight::xlMedium
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Borders NXÌ Weight vpeBðÝèūܹñB
OperationStopped: M:\usr\rehome10\PS\PS-Support\PS_Excel\017_PS-Excel_17.ps1:85
Line |
85 | $sheet.cells.item(12,3).borders.Weight = $Weight::xlMedium
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Borders NXÌ Weight vpeBðÝèūܹñB
OperationStopped: M:\usr\rehome10\PS\PS-Support\PS_Excel\017_PS-Excel_17.ps1:95
Line |
95 | $sheet.cells.item(14,3).borders.Weight = $Weight::xlMedium
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Borders NXÌ Weight vpeBðÝèūܹñB
OperationStopped: M:\usr\rehome10\PS\PS-Support\PS_Excel\017_PS-Excel_17.ps1:105
Line |
105 | $sheet.cells.item(14,3).borders.Weight = $Weight::xlMedium
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Borders NXÌ Weight vpeBðÝèūܹñB
OperationStopped: M:\usr\rehome10\PS\PS-Support\PS_Excel\017_PS-Excel_17.ps1:115
Line |
115 | $sheet.cells.item(20,3).borders.Weight = $Weight::xlHairline
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Borders NXÌ Weight vpeBðÝèūܹñB
OperationStopped: M:\usr\rehome10\PS\PS-Support\PS_Excel\017_PS-Excel_17.ps1:125
Line |
125 | $sheet.cells.item(22,3).borders.Weight = $Weight::xlThin
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Borders NXÌ Weight vpeBðÝèūܹñB
OperationStopped: M:\usr\rehome10\PS\PS-Support\PS_Excel\017_PS-Excel_17.ps1:135
Line |
135 | $sheet.cells.item(24,3).borders.Weight = $Weight::xlMedium
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Borders NXÌ Weight vpeBðÝèūܹñB
OperationStopped: M:\usr\rehome10\PS\PS-Support\PS_Excel\017_PS-Excel_17.ps1:145
Line |
145 | $sheet.cells.item(26,3).borders.Weight = $Weight::xlThick
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Borders NXÌ Weight vpeBðÝèūܹñB
|