エクセルファイルがバックグラウンドで開いたままの状態になる

アプリケーションスコープでエクセルファイルをバックグラウンドで開いた場合、時々ファイルが開いたままの状態になる時があります。バックグラウンドでアプリケーションも動いているので、気づかずファイルを普通に開くと、”ファイルは既に開かれています”、というメッセージが出ます。

動作するアクティビティの数が多いと、エクセルファイルが閉じられない場合があり、次のアクティビティに進まず、ワークフローが停止したままになってしまうケースもあります。この場合の解決方法としては、

アクティビティのブックを閉じるでエクセルファイルを閉じる。
ウインドウズコマンドか、PowerShellでアプリケーションを閉じる。

です。

アクティビティのブックを閉じるを使用する際には、Excelアプリケーションスコープ出力にWorkbookApplicationの型の変数を設定します。

その後、ブックを閉じるのアクティビティに先ほどの変数を記入します。





PowerShellでアプリケーションを閉じる方法は、ウインドウズのOSに組み込まれているPowerShellのスクリプトでエクセルを閉じます。スクリプトは、

stop-process -Name Excel

です。これをテキストファイルとして(あるいは拡張子.ps1で)保存します。これで、スクリプトが複数行に渡る場合でも問題なく追記できますね。

上記で作成したファイルを、アクティビティのテキストファイルから読み込みを追加して、スクリプトのパスを指定して読み込み、更にプロパティの出力にStringの型の変数を設定します。

その下に、アクティビティのPowerShellを呼び出しを追加し、上記で設定した変数名を入力します。

UiPathのフォーラムで、この問題に関する書き込みがされていました。

https://forum.uipath.com/t/excel/153344