Free Trial

ディスカッション

答えを見つけ、質問し、Alteryx の専門知識を共有してください。
解決済み

複数シート存在するExcelファイルをシート毎に別ファイルとして保存する方法について

ヤッピー
アトム

お世話になります。

 

シート1,シート2,シート3のように、一つのブックの中に複数のシートを持つエクセルファイルを読み込み、シート毎に個別のエクセルファイルとして出力、保存するフローを作成したいと考えています。

 

また、保存時のファイル名はシート名を使用するような形にしたいと考えています。

 

シート毎の読み込みまでは実現できたのですが、その先の個別ファイルとして保存する過程(パスの指定、シート名の取得)が思うように実装できず、質問させていただきます。

3件の返信3
AkimasaKajitani
17 - Castor
17 - Castor

@ヤッピー さん

 

前提として、スキーマ(フィールド名、データ型等)は同じ、出力の際に動的にシート名、ファイル名を生成し、保存する。元のファイルのフォーマット(書式)は無視する、という前提でお答えします。

 

基本的にはデータ出力ツールの「フィールドからファイル/テーブル名を取得する」オプションを利用すると、ツール1つで複数のファイルに書き込むことができます。この際、保存するファイルのパスをうまく作ってあげればオッケーです。

 

 

image.png

 

ポイントは、ファイルパス全体を変更する、にセット。

「ファイル名またはファイル名の一部を含むフィールド」は、保存先のパスを作成したもの。
「出力でフィールドを保持する」にはチェックを入れます。

 

なお、シート名は、ファイルの読み込み時に「ファイル名をフィールドとして出力する」のオプションで「フルパス」もしくは「ファイル名のみ」を選択して下さい。

もし、保存先も入力と同じところにしたい、などの場合は「フルパス」を選択すると良いと思います。

 

image.png

 

フルパスのオプションにした時は、シート名の取得が必要になります。正規表現ツールなどを使うと便利です。

 

image.png

 

最終的には取得した情報を使ってファイルパスを作成し、保存する、ということになります。例えば以下のようにしてパスを作成できます。

 

FileAddPaths(FileGetDir([FileName]),[SheetName]+".xlsx|||Sheet1")

 

最終的なワークフローは以下のようになります。

 

image.png

 

実際にやりたいことによってもっと簡単になったり、もっと複雑にせざるをえないケースなどもありますが、おおむねこのような感じでいけると思われます。詳細はサンプルワークフローをご確認下さい。

 

 

ヤッピー
アトム

迅速にご回答いただき、ありがとうございます!

 

ご教示いただいた方法で、実装したかった機能が実現できました。

正規表現ツールの活用方法についても勉強になりました。

ありがとうございます。

 

ヤッピー
アトム

先日に引き続き恐れ入ります。

スキーマが異なる場合には、より複雑なフローの実装が必要になるでしょうか…?