お世話になります。
シート1,シート2,シート3のように、一つのブックの中に複数のシートを持つエクセルファイルを読み込み、シート毎に個別のエクセルファイルとして出力、保存するフローを作成したいと考えています。
また、保存時のファイル名はシート名を使用するような形にしたいと考えています。
シート毎の読み込みまでは実現できたのですが、その先の個別ファイルとして保存する過程(パスの指定、シート名の取得)が思うように実装できず、質問させていただきます。
解決済! 解決策の投稿を見る。
@ヤッピー さん
前提として、スキーマ(フィールド名、データ型等)は同じ、出力の際に動的にシート名、ファイル名を生成し、保存する。元のファイルのフォーマット(書式)は無視する、という前提でお答えします。
基本的にはデータ出力ツールの「フィールドからファイル/テーブル名を取得する」オプションを利用すると、ツール1つで複数のファイルに書き込むことができます。この際、保存するファイルのパスをうまく作ってあげればオッケーです。
ポイントは、ファイルパス全体を変更する、にセット。
「ファイル名またはファイル名の一部を含むフィールド」は、保存先のパスを作成したもの。
「出力でフィールドを保持する」にはチェックを入れます。
なお、シート名は、ファイルの読み込み時に「ファイル名をフィールドとして出力する」のオプションで「フルパス」もしくは「ファイル名のみ」を選択して下さい。
もし、保存先も入力と同じところにしたい、などの場合は「フルパス」を選択すると良いと思います。
フルパスのオプションにした時は、シート名の取得が必要になります。正規表現ツールなどを使うと便利です。
最終的には取得した情報を使ってファイルパスを作成し、保存する、ということになります。例えば以下のようにしてパスを作成できます。
FileAddPaths(FileGetDir([FileName]),[SheetName]+".xlsx|||Sheet1")
最終的なワークフローは以下のようになります。
実際にやりたいことによってもっと簡単になったり、もっと複雑にせざるをえないケースなどもありますが、おおむねこのような感じでいけると思われます。詳細はサンプルワークフローをご確認下さい。
迅速にご回答いただき、ありがとうございます!
ご教示いただいた方法で、実装したかった機能が実現できました。
正規表現ツールの活用方法についても勉強になりました。
ありがとうございます。
先日に引き続き恐れ入ります。
スキーマが異なる場合には、より複雑なフローの実装が必要になるでしょうか…?