エクセルアプリケーションスコープについて

お世話になっております。

Excelアプリケーションスコープで開きたいファイルが、RPAでデスクトップ上に作成したフォルダ(フォルダ名もその都度変わります)の中に入っている場合、式はどのようにすれば良いでしょうか?

C:¥Users¥〇〇¥Desktop¥フォルダ名¥ファイル名.xlsx
決まったフォルダの中ならこのような式になると思いますが、フォルダ名が変わるので設定の仕方が分かりません。

作成したフォルダ名は
System.IO.Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory),“59-000_”+CurrentRow(7).ToString)

このようになっています

こんにちは

フォルダ名に何かルールはありますでしょうか?

アプローチ方法としては、例えば、まずは以下の式でデスクトップ上のフォルダ一覧を取得しておいて

folders = System.IO.Directory.GetDirectories(System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory))

そこから希望のフォルダを探すことになると思います。(そのためのルールが必要です)

かならずフォルダ名の頭に"59-000"がつくなら

folders = System.IO.Directory.GetDirectories(System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory),"59-000*")

としても良いかもしれません。複数ヒットする可能性があるので、そこを特定するルールが必要かと思います。

59-000以外にルールはなく、仰る通り複数ヒットする可能性があります。

やりたい事としては、デスクトップ上に新規フォルダを作成し、そこに固定のエクセルファイルを入れて、フォルダ名とファイルの中身を別の固定のエクセルファイルから取得し書き込むという作業を繰り返し行いたいです。

この場合、フォルダ名にルールがなくて特定が厳しそうなので、特定できるフォルダで一度ファイルを作成してから、デスクトップ上に作成したフォルダに貼り付ける方がいいでしょうか?

こんにちは

この作成する部分が、同一プロセス内で行われるのであれば、作成した際にそのデータを
保持→後でこれを利用すれば良いようにおもえますが、これは難しいのでしょうか?

あるいは別のプロセスで行われる場合でも、どこかに情報を保持しておいて、それを読み込む手も
あるかと思います。

同一プロセス内で行います。

現在
フォルダを作成→フォルダ内にファイルをコピー→コピーしたファイルに書き込み
の手順で進めていますが、ファイルに書き込むときにExcelアプリケーションスコープでファイルを開かないといけないと思っていました。

保持はどのアクティビティになりますか?

こんにちは

この時点で、対象のファイルのフルパスがあるはずなので、これを変数に入れておけば良いかと思います。
現在はどのようにコピーしていますでしょうか?

添付ファイルのようにコピーしています。

こんにちは

コピー先の内容がすべてが確認できませんが概ねいかになるかと思います。

変数パネルでString型変数を作成(名前は仮に xlsFilePathとします)

ファイルをコピーの直前に代入アクティビティを設置
左辺: xlsFilePath
右辺: ファイルをコピーアクティビティのコピー先の内容

ファイルをコピーアクティビティのコピー先を xlsFilePath にする。

エクセルアプリケーションスコープのファイル欄もxlsFilePath にする。

コピー先は

System.IO.Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory),“59-000_”+CurrentRow(7).ToString)

を指定していました。

教えていただいたように作成してみましたが、これをするとExcelアプリケーションスコープで開くファイル名が変わってしまうようで、”ファイルが見つからない”とエラーになってしまいました。

こんにちは

失礼しました。コピー先はフォルダ名までなのですね。
それではファイル名を付加する必要があります。
ファイル名は固定でしょうか?あるいは動的でしょうか?

基本的なアプローチは、エクセルアプリケーションスコープで

System.IO.Path.Combine(xlsFilePath, "xxxx.xlsx")

のような感じになると思います。

ファイル名は固定で、教えていただいたもので解決しました。
ありがとうございました。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.