PowerShellのCloseMainWindow()でのエクセル落としの時の戻り値について

ExcelViewerだとファイルの編集ができずに「保存しますか?」のポップアップ
を出す試験ができないのでOSSのOffice「LibreOffice」で試験しました。

なんらかの理由で編集扱いになって閉じるボタンを押した時に保存しますか?が
出る場合は閉じる処理は戻り値Trueなのですが、ポップアップが残ってLibreOfficeが
落ちないという状態になりました。
このケースはエラーコードで検知という事はできないので
後処理でプロセスが落ちているかのチェックが必要かと思います。

また、強制終了すると次回起動した時にファイルの復元画面が出てきました。
強制終了はしない方がいいかも知れません。

JOB化した際にエクセル閉じる処理が失敗した場合はABENDさせるのがいいかと思います。

以下、戻り値です。

PowerShellにて(Get-Process soffice.bin).CloseMainWindow() を実行

結果1.libreoffice(Calc)が起動していない時:

PS C:\Users\excelusr> (Get-Process soffice.bin).CloseMainWindow()

Get-Process : 名前 “soffice.bin” のプロセスが見つかりません。プロセス名を確認し、コマンドレットを再度呼び出してください

発生場所 行:1 文字:2
+ (Get-Process soffice.bin).CloseMainWindow()
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (soffice.bin:String) [Get-Process], ProcessCommandException
+ FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand

null 値の式ではメソッドを呼び出せません。
発生場所 行:1 文字:1
+ (Get-Process soffice.bin).CloseMainWindow()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) []、RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

結果2.ファイルを開くを選択中で閉じるのに失敗した場合
False

結果3.閉じるのに成功した場合
True

結果4.ファイルを編集した後で保存していない状態で閉じるを押した場合
True
と表示されるが、保存しますか?のポップアップが残りLibreOfficeは落ちない
結果5.Stop-process -name soffice.bin で強制終了した場合は
libreofficeは落ちるが、次回起動した場合に復元の画面が出てくる。

Comments are closed.