Excel操作のテンプレ
準備
using namespace Microsoft.Office.Interop.Excel [Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Interop.Excel")
これは[Microsoft.Office.Interop.Excel.Range] などを [Range] と省略できるメリットがあるが、名前空間にうるさい人からは怒られるかも?
小規模なスクリプトなら問題ないと思う。
#新規Excelを立ち上げてファイルダイアログで開く場合 $excel = New-Object -ComObject excel.application $excel.Visible=$true $book = $excel.Workbooks.Open($excel.GetOpenFilename())
#立ち上げ中のExcelの場合 $excel = [System.Runtime.InteropServices.Marshal]::GetActiveObject("Excel.Application") $book = $excel.Workbooks(1)
$rがRange型である判定
if($r -is [Range]){ echo Range型である }
$r1, $r2 の共通範囲があるか判定
if($excel.Intersect( $r1, $r2) -ne $null){ echo ある }