6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【UiPath】設定ファイルが既に開いているかどうかを確認

Last updated at Posted at 2021-07-15

はじめに

この投稿は、RPAツール「UiPath」での実装パターン についての記事です。

UiPathのコミュニティ「UiPath Friends」が企画する「UiPathブログ発信チャレンジ2021サマー」の 16日目の投稿でもあります。

企画の内容は こちら 。カレンダーのURLは こちら です。

設定ファイルを開いたまま実行して、排他エラー

開発中には良くあります。
設定ファイルに項目を追加して、そのままデバッグ実行すると、以下のような「ファイルが開いている=排他エラー」になります。

image.png

Excelアプリケーションスコープを使用し「読み込み専用」で参照しても良いですが、項目追加後のファイル保存忘れに気づけなくなる危険性もあるので「排他エラー」で仕方ないのですが、再度実行するのは面倒です。

ファイルが開いていればダイアログを表示

なので、以下のようなフローを事前に呼び出して
 ファイルが開いていれば、「閉じてください」ダイアログを表示
とすると、再実行しなくて良くなり、便利です。
image.png

ダイアログを表示すると「UnAttendedRobot」の場合、処理が中断されてしまうので、この方法は「AttendedRobot」または開発中のみにしたほうが良さそうです。
設定ファイルに「確認ダイアログを表示する」フラグを用意し制御するのもGoodです。

「ファイルが利用中か?」のチェック処理については、ネット上に色々紹介がありますが、InvokeCodeアクティビティで以下のように「排他モードで開いてみる」という方法で実施しています。(VB.NETのコードです)

isUsing = False
If Not(System.IO.File.Exists(filePath)) Then
    Throw New Exception("ファイルがありません。" & filePath)
End If
'// ファイルを排他モードで開いて、エラーが出れば使用中とみなす(Using指定すると自動開放される)
Try
    Using myFileStream As New FileStream(filePath,
                                         FileMode.Open, 
                                         FileAccess.ReadWrite,
                                         FileShare.None)
    End Using
Catch ex As Exception
    isUsing = True
End Try

指定のファイルを開いている場合、以下のようなダイアログが表示されます。
ダイアログが出たら、設定ファイルを閉じてからOKボタンを押せば処理続行されます。

image.png

設定ファイルに限らず、処理結果ファイルなどにも応用できます。

内容を確認しやすいように、xaml形式に切り出したものを用意しました。

終わりに

いかがでしたでしょうか。実装例として役立てば幸いです。
この記事が参考になったら、 LGTMをお願いします。閲覧ありがとうございました。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?