WinActor活用コラム

教えて !! スーさん。

第9回 「ファイル関連のライブラリをいろいろと使ってみよう」 の巻

目次

  

 

  
スーさんスーさんとサーさんサーさん、ふたりの会話を通してWinActorの利用方法をお伝えします。
  

 

スーさん
はい、しっかりとついてきてくださいね。
繰り返し処理の中で、番号一覧ファイルを検索して、返却値が空欄以外であれば処理をする、返却値が空欄の場合は繰返しを終了する、というものになります。

 

スーさん
①「繰り返しグループ」です。
この「繰り返しグループ」では、無条件ループ(永久に繰り返す)状態を作ります。
条件式設定の内容は下の図に示すように、「値⇒」「等しい」「値⇒」にして常に条件式が成立する設定とします。
また、カウンタには変数「ファイルカウンタ」を指定します。

 

サーさん
このように条件式が常に成立するようにした繰返し処理のことを無条件ループって言うんですね。

 

スーさん
②「ファイル検索」を使用して番号一覧ファイルのパスを取得します。
対象フォルダには相対パスで「作業用」を指定します。
ファイル名フィルタには値で「*番号一覧*」を指定します。この指定により「番号一覧」を含むファイル名を検索します。
インデックス番号には繰り返しグループで指定した変数「ファイルカウンタ」を指定します。ファイルカウンタの内容は繰り返すごとに1から順次カウントアップされます。
ファイルパス格納先として変数「番号一覧ファイルパス」を指定します。

 

スーさん
③「分岐グループ」です。
ここでは②で取得した変数「番号一覧ファイルパス」を内容を判定します。
先ほどの②ファイル検索には「インデックス番号に対応するファイルが存在しない場合、空文字が設定される」という仕様ですので、番号一覧ファイルが4つありますので、4回繰り返す間は「番号一覧ファイルパス」にはファイルパスが設定されていて、5回目の繰り返しの際は「番号一覧ファイルパス」には空文字が設定されることになります。
条件式で「番号一覧ファイルパス」「等しくない」「値⇒」とすることで、空欄以外は真の処理、空欄の場合は偽の処理を実行することになります。

 

スーさん
④「繰り返し終了」を使用します。
先ほどの③の分岐で空欄の場合に繰返しを終了します。
繰り返し処理が無条件ループの場合は、このように分岐で判定して、繰返しを終了する仕組みにする必要があります。

 

サーさん
ファイル名にある文字列が含まれているものを取得するような場合は「ファイル検索」を使えばよいということですね。
あとは、無条件ループから脱出する仕組みが必要だという点も理解できました。

 

スーさん
では次に番号一覧のファイルパスが取得できた場合の処理を見ていきます。
ファイルパスから組織名を抜き出して、組織名のフォルダを作成し、番号一覧ファイルを開いて行単位の処理を行う、という流れになります。
行単位に繰り返し行う処理部分については、グループを閉じてありますが、こちらは後程展開して説明します。

 

スーさん
⑤「ファイルパスからフォルダパスをファイル名を取得」を使用します。
対象ファイルパスに②で取得した「番号一覧ファイルパス」を指定します。
フォルダパスには変数「番号一覧フォルダ」を指定しています。
フィル名には「番号一覧ファイル名」を指定しています。
このライブラリが実行されると、②で取得した番号一覧のファイルフルパスから、フォルダパス部分とファイル名部分に分割されて、それぞれ指定した変数に設定されます。

 

スーさん
⑥「括弧書きの内側を取り出す」を使用して組織名を取得します。
対象文字列には⑤で設定された「番号一覧ファイル名」を指定します。
開きかっこ、閉じかっこにはそれぞれ「値⇒【」、「値⇒】」のように指定します。
結果には変数「組織名」を指定しています。
このライブラリが実行されると、【】の内側にある文字列が結果の変数「組織名」に設定されます。
ファイル名が「【A事業部】番号一覧(2025年05月).xlsx」の場合は、変数「組織名」に「A事業部」が設定されることになります。

 

スーさん
⑦「フォルダパスとファイル名の連結」を使用します。
先ほどの⑤とは逆でフォルダパスとファイル名を連結するライブラリです。
今回連結して作成するのはファイルパスではなく、フォルダパスなので、ファイル名ではなくフォルダ名になりますが問題ありません。

連結結果には変数「組織名フォルダ」を指定しています。
フォルダ名には⑤で設定された「番号一覧フォルダ」を指定します。
ファイル名には⑥で設定された「組織名」を指定します。
このライブラリが実行されると、連結結果の「組織名フォルダ」に組織名までのフォルダパスが設定されます。

 

スーさん
⑧「フォルダ作成」を使用します。
作成フォルダ名に⑦で設定された「組織名フォルダ」を指定することで、作業用フォルダ配下に組織名のフォルダが作成されます。

 

スーさん
⑨「Excel開く(前面化)」を使って番号一覧ファイルを開きます。
ファイル名には②で取得した「番号一覧ファイルパス」を指定します。
番号一覧ファイルはシートが1つしかないので、シート名の指定は省略しています。

 

スーさん
⑩「Excel操作(最終行取得 その4)」です。
こちらを使用して番号一覧ファイルの最終行を取得します。
ファイル名とシート名は先ほどの⑨と同じです。
検索列に「値⇒A」を指定します。
最終行には変数「最終行」を指定しています。

 

スーさん
⑪「Excel操作(保存なしで閉じる」を使用して番号一覧ファイルを閉じます。
ファイル名には「番号一覧ファイルパス」を指定します。
実行結果には「結果」を指定しています。

 

スーさん
ここまでは大丈夫でしょうか。

 

サーさん
「ファイルパスからフォルダパスをファイル名を取得」とか「括弧書きの内側を取り出す」とかは使ったことがありませんでした。
一連の処理内容としては難しく感じる部分はなく、わかりやすかったです。

 

スーさん
では最後に番号一覧ファイルの行単位に繰り返す部分を見ていきましょう。
行数分繰り返す中で、Noを取得して、Noファイルのファイルパスを生成して、ファイルを移動させるという流れになります。

 

スーさん
⑫「繰り返しグループ」を使用して行数分繰り返します。
今回は範囲のところで、2行目から最終行まで繰り返すように設定しています。
また、カウンタには変数「行カウンタ」を指定しています。
この場合変数「行カウンタ」には、2から始まって繰り返すごとにカウントアップされます。

 

スーさん
⑬「Excel操作(値の取得2)」を使用してNoを取得します。
ファイル名、シート名はこれまでと同様です。
セル(行)には⑫で指定した「行カウンタ」を指定します。
セル(列)にはNoが記載されているA列を指定します。
取得方法は「value」を指定します。
格納先変数には変数「No」を指定しています。
これにより、変数「No」にA列に記載されている番号が設定されます。

 

スーさん
⑭「文字列の連結(3つ)」を使用して、存在するファイル名を連結します。
文字列1には「値⇒No_」を指定します。
文字列2には⑬で取得した変数「No」を指定します。
文字列3には「値⇒.xlsx」で拡張子を指定します。
連結結果には変数「Noファイル名」を指定しています。
このライブラリが実行されると、Noファイル名には「No_10.xlsx」のようなファイル名が設定されます。

 

スーさん
⑮「フォルダパスとファイル名の連結」を使用します。
先ほど⑦でも使いましたが、こちらを使って存在するNoファイルのフルパスを生成します。
連結結果には変数「Noファイルパス」を指定しています。
フォルダ名には「番号一覧フォルダ」を指定します。
ファイル名には⑭で連結した「Noファイル名」を指定します。

 

スーさん
⑯「ファイル移動」を使用してNoファイルを移動します。
移動元には⑮で連結した「Noファイルパス」を指定します。
移動先には⑧で作成した「組織名フォルダ」を指定します。
このライブラリを実行すると、作業用フォルダ配下に存在していたNoファイルが、作成した組織名のフォルダ配下に移動します。

 

スーさん
シナリオを実行すると最初に示した通り、作業用フォルダ配下は図のような結果になります。

 

サーさん
番号一覧のファイル数分繰り返す部分と、番号一覧ファイルの行数分繰り返す部分を分けて説明していただいたので、それぞれはわかりやすかったですが、全体を見てみると2重ループになっていたり、分岐があったりで結構複雑な構造ですよね。
このような複雑な構造のシナリオを作るためには、部分ごとに分けて考えていくということが必要なんだなと思いました。

 

スーさん
そうですね。全体が複雑な場合でも、部分部分に分けて単純化していくという考え方はよいことだと思います。

今回は「13_ファイル関連」の配下にあるいろいろなライブラリを使って操作するシナリオを作成するということでした。
実際に使用したファイル関連のライブラリは以下の通りです。
02_ファイル操作 > ファイル移動
03_フォルダ操作 > フォルダ作成
04_ファイル一覧 > ファイル検索
05_ファイル名 > ファイルパスからフォルダパスとファイル名を取得
05_ファイル名 > フォルダパスとファイル名の連結ac

他にもいろいろなライブラリがありますので使ってみましょう。

 

サーさん
はい、今回もいろいろなライブラリを教えていただきありがとうございました。
個人的には「ファイル検索」と「括弧書きの内側を取り出す」のライブラリ、それと無条件ループの仕組みといったところが特に印象的でした。
また、次回もよろしくお願いします。

 

 

 

 


 

目次

 

WinActor活用サイトへ戻る