【Alteryx】ファイル名もシート名も異なるExcelファイルのデータを一気に読み込めるマクロを作ってみました

複数Excelファイルデータを一気に読み込む!
2020.08.13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。データアナリティクス事業本部のまつおかです。
長らくブログを書けずにいました。いかんですね。
また頑張って書いていきたいと思います!

さて今日は、同じフォルダに格納されている、ファイル名もシート名も異なるExcelファイルのデータをAlteryxで一気に読み込めるマクロを作ってみましたので、そちらをご紹介します。

環境と使用データ

今回のマクロ作成に使用した環境は以下のとおりです。

  • Windows 10 Pro
  • Alteryx Designer 2020.2

データはTableau Desktopをインストールするとデフォルトで付いているサンプルデータ「スーパーストア」を使用し、オーダー年月ごとにシートを分け、かつ3ヶ月分を1ファイルにまとめたExcelファイルをいくつか用意しました。
データのフォーマットは全シート同じであることを前提としています。

作成したマクロはこちら

全体のワークフローは以下のようになります。

まず呼び出すマクロ「ExcelDataUnion」に、読み込みたいファイルが格納されているディレクトリのパスを渡します。次に「ExcelDataUnion」内で対象のディレクトリに入っているExcelファイルとシート名のリストを取得し、その後動的入力ツールでデータを読み込みます。
では処理について詳細を見ていきましょう。

マクロ呼び出しワークフロー

①テキスト入力ツール
ファイルが格納されているディレクトリのパスが入力してあります。

②マクロ「ExcelDataUnion」を呼び出し
パラメーターとしてファイルが格納されているディレクトリのパスを渡します。

ExcelDataUnion(バッチマクロ)


①データ入力ツール
対象のディレクトリの中にあるExcelファイルとその中にあるシートのリストを取得します。
ツール設定時は、まず任意のExcelファイルをひとつ指定し「Excel入力を選択」ウィンドウで「シート名のリストのみをインポート」を選択します。次にファイル名を指定している箇所でファイル名を「*.xlsx」に変更します。これで対象のディレクトリ内にある全Excelファイルを検索することができます。また「ファイル名をフィールドとして出力する」は「フルパス」を選択します。
※ ここで指定したディレクトリは呼び出し元から渡されたディレクトリで上書きするため、マクロ作成時はどこを指定しても問題ありません。

②アクションツール
ファイルのディレクトリ部分は、コントロールパラメーターツールとアクションツールを使用し、呼び出し元から渡された検索対象のディレクトリ情報で値を更新します。

③フォーミュラツール
ひとつ前のデータ入力ツールで取得したファイルパスとシートのリストから、次の動的入力ツールに渡すために「<ファイルパス>|||<シート名>」という形式の文字列を作成します。
データ入力ツールからは以下のような状態でデータが出力されますので、

「FileName」の「<List of Sheet Names>」を「Sheet Names」で置換する式を設定します。

Replace([FileName],"<List of Sheet Names>",[Sheet Names])

④動的入力ツール
ひとつ前のフォーミュラツールで作成したファイルパスをもとに、データを読み込みます。
「データ入力ソーステンプレート」には、任意のExcelファイルとシートを指定してください。
※ ここで設定したデータフォーマットと同じ形式でないとこのマクロを使えないわけではありません。ただ、読み込み対象のファイルのフォーマットが統一されていない場合は読み込まれないファイルが出てきますのでご注意ください。

「フィールド」にはひとつ前のフォーミュラツールで作成した「FileName」を、「アクション」は「ファイルパス全体を変更する」を選択します。

※動的入力ツールに関しての詳細はこちらをご参照ください。
AlteryxのDynamic Inputツールの話 | Developers.IO

これで一通りの作成が完了です。
実行してみると、対象のディレクトに入っている全てのファイル、全てのシートのデータを読み込めたことが確認できます。

さいごに

複数のExcelファイルでも、シート名が全て同じであればデータ入力ツールひとつで読み込みが可能ですが、シート名が異なる場合は動的入力ツールを使用しひとつずつ読み込む必要があります。
マクロにしないと動かないわけではないのですが、ひとつ作成しておけば流用できて便利ですので、ぜひ作ってみてください!

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400