PowerShell 上でExcel,Word(ComObject)のインテリセンスを機能させる方法

PowerShellカテゴリを表すパンダのイラスト PowerShell

インテリセンスを機能させるためのイニシャルコード (Excel)

Excelのインテリセンスを機能させるためのイニシャルコード例

ポイントは、プロセスの解放を行わないこと

#オブジェクトを生成~、よく使うオブジェクトをいくつか実行
$msexcel = New-Object -ComObject "Excel.Application"
$msexcel.Visible = $true
$Wb  = $msexcel.Workbooks.Add()
$ws = $Wb.Sheets(1)
$R = $ws.Range("A1")
$S = $ws.Cells(1,1)


# Excelを閉じる~プロセスを解放する までは行わない
# ここを実行すると、インテリセンスが機能しなくなる
#$msexcel.Quit()
#$msexcel = $null
#[GC]::Collect()


 このコードを実行すると、意味もなくExcelが1ブック起動してしまうというデメリットがあるが、それ以上にPowerShellでのコーディング時に、Excelにかかわるインテリセンス(補完)が機能するという大きな大きなメリットが得られる。どうやら、PowerShell ISE 上でExcelオブジェクトのインスタンスが生成(実体化)されれば、生成したオブジェクトを利用してインテリセンスを表示できるようだ。

インテリセンスを機能させるためのイニシャルコード (Word)

 Wordも同様の手法でインテリセンスを機能させることができる。こちらはWordのインテリセンスを機能させるためのイニシャルコードの例

$msWord  = New-Object -ComObject "Word.Application"
$msWord.Visible = $true
$d = $msWord.Documents.add()
$P = $d.Paragraphs
$R = $d.Range()

# Wordを閉じる~プロセスを解放する までは行わない
# ここを実行すると、インテリセンスが機能しなくなる
#$msWord.Quit()
#$msWord = $null
#[GC]::Collect()

 このコードを実行すると、意味もなくWordが1ドキュメント起動してしまうというデメリットがあるが、それ以上にPowerShellでのコーディング時にWordにかかわるインテリセンス(補完)が機能するという大きな大きなメリットが得られる。

考え方的には、Excel、WordだけでなくComObject全体的にできそうだ。

インテリセンスを機能させることのメリット・デメリット

メリットは、とにかくVBAのようなコード補完がPowerShell上ですべて完結し、コーディングが楽になること。これは大きなメリットになる。これまで業務でVBAにはわりと深くかかわってきたので、PowerShell上で似たような実装ができるようになることは、スキルアップする上でも大切だ。

 デメリットは、インテリセンスのために無駄なプロセス(オブジェクト)が生成されること。ただ手で消せばいいだけだけど。

文書情報

記事タイトル
PowerShell 上でExcel,Word(ComObject)のインテリセンスを機能させる方法
作成日
更新日
Source URL
https://papanda925.com/?p=1731

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました