※この記事は「2021年5月16日」に更新しました。
PowerShell(パワーシェル)講座です。
前回は、複数フォルダを高速で作成する方法を紹介しました。
今回は、WPS Office を PowerShell で操作する方法について紹介します。
環境は、Windows 10(64bit)、PowerShell 6.1.2、WPS Office 2016 です。
WPS Office を操作する
WPS Office を操作する方法を紹介します。
PowerShell を使えば、Excel を操作できるのですが、WPS Office(互換 Office)はどうなのでしょうか?
問題ありません。
PowerShell から Excel を操作するには、COM(Component Object Model)という技術が使われています。
Windows でプログラム間の連携に使われ、COM対応プログラムであれば、PowerShell を使って操作できます。
SpreadSheet を操作する
試しに Spreadsheet(表計算ソフト)を操作してみます。
$E = New-Object -ComObject Excel.Application $E.Visible = $true $WB = $E.Workbooks.Add() $WS = $WB.Worksheets.item(1) $WS.Name = "test" $CELLS = $WS.Cells $CELLS.Item(1,1) = "テスト" $WB.SaveAs("C:\powershell\excel\wps-spreadsheet-test1.xls") $WB.close() $E.quit() $CELLS = $null $WS = $null $WB = $null $E = $null [GC]::Collect()
下のスクリーンショットのように PowerShell で順番に実行していき、動きを確認していきましょう(変数を空にする順番が逆になってますが、テキストの方を参考にしてください)。
オブジェクト指向のプログラミング言語を学習したことがある方ならなんとなく理解できるかと思います。
$E、$WB、$WS、$CELLS は、変数です。
変数に関して、詳しく知りたい方は、以下の記事をご参照下さい。
【補足事項】プロセスの解放について
Spreadsheet(表計算ソフト)を PowerShell から操作していて、アプリを閉じるとき、以下を実行します。
$E.quit()
しかし、タスクマネージャーで見てみると、プロセスが残っていることが確認できます。
そこで、変数を空にして、以下の処理を行うわけです。
$CELLS = $null $WS = $null $WB = $null $E = $null [GC]::Collect()
Writer を操作する
ついでに Writer(文書作成ソフト)も操作してみます。
$W = New-Object -ComObject Word.Application $W.Visible = $true $DOC = $W.Documents.Add() $DOC.Content.Text = "テスト" $DOC.SaveAs("C:\powershell\word\wps-writer-test1.doc") $W.quit() $DOC = $null $W = $null [GC]::Collect()
Spreadsheet のときと同じように、PowerShell で順番に実行していき、動きを確認していきましょう(スクリーンショットは省いています)。
最後に
いかがでしょうか。
COM というインターフェースのおかげで PowerShell から簡単に WPS Office を操作することができました。
もちろん、スクリプトとしてファイルに保存して実行すれば、まとめて操作してくれます。
1行1行コマンドラインから入力して、Excel や Word を操作できるのは結構楽しいものです。