「手順の繰り返し実行」を設定した手順で、繰り返し指定ファイル(パラメーターリスト)の中身が空のときはどうなるでしょうか?
上図のようにデフォルト設定では、その繰り返し手順は警告終了となりますので、後続手順が実行されます。
繰り返し指定ファイルの中身が空のときに、後続手順を実行させたくないときは、以下のように後続手順の [判定条件] 設定で、[先行手順の実行結果が次のとき実行する] の [警告終了] を「いいえ」に設定します。
「手順の繰り返し実行」を設定した手順で、繰り返し指定ファイル(パラメーターリスト)の中身が空のときはどうなるでしょうか?
上図のようにデフォルト設定では、その繰り返し手順は警告終了となりますので、後続手順が実行されます。
繰り返し指定ファイルの中身が空のときに、後続手順を実行させたくないときは、以下のように後続手順の [判定条件] 設定で、[先行手順の実行結果が次のとき実行する] の [警告終了] を「いいえ」に設定します。
xoBlosを実行すると、ユーザーの一時フォルダ
C:\Users\<ユーザー名>\AppData\Local\Temp
にサイズの大きな .tmp ファイルが作成される。
「Excel 表から抽出」手順で、サイズの大きな抽出対象ファイルをCSV形式で指定している場合は、その手順を見直してみましょう。
CSV形式からの抽出で、高速エンジンの使用が「はい」になっている場合は、「いいえ」で設定してみてください。「Excel 表から抽出」手順では、CSVファイルを一旦 Excelファイルとして処理するため、.tmp ファイルが作成されてしまうことがあります。
CSVファイルをXMLファイルに変換するには、「変換(CSV→抽出データ)」手順やxobQueryを使用する方法もありますので、検討してみてください。
データ抽出の際、作成される XML ファイル内に不要な項目があれば、キーワード『非出力項目』を「yes」にすることで、出力を阻止することができます。上図で、もし「その他情報」が要らない場合は、「その他情報」の列に「yes」を設定します。
「抽出するのに不要とはどういうこと?」
「最初から出力項目の対象としなければ良いじゃない!」
ご意見は尤もです。しかし、上図のように処理値として扱う際には、明示が必要です。
抽出するデータの条件として「その他情報」が空白であるものを設定(空白でないものをスキップ)しています。更には『取得データの組合せ』で、データ情報を加工したものを出力しようとしています。「その他情報」その物は不要としていますが、判定等で使う場合には具体明示しなければなりません。
「不要情報も XML ファイル上にあるだけで、生成時に使わなければ良いじゃない!」
こういったご意見もあるかと思います。しかし大量データで、一項目減るだけで容量が大きく削減できるのであれば、持たないことが望ましいです。また、CSV に変換して別のシステムにあて込むという要件があった場合には、列構成を合わせる為に余計な情報は確実除去しなければならない――というケースも充分あり得ます。
次の記事の補足情報です。
Designer:ピボット処理の自動実行
http://xoblos.hatenablog.jp/entry/2017/08/19/233737
上記の記事の方法でピボットテーブル、ピボットグラフを作成すると、ひな形データシートの3行目までを範囲とするため、余分な (空白) カテゴリーができてしまいます。ピボット集計上は何ら問題ないため、そのままにするか、気になる場合は軸フィールドのフィルタリングでオフにする方法で問題ないと思います。
どうしても (空白) カテゴリーを作りたくない場合は、下記の2つの方法があります。1. の方法は、処理速度が遅いため、データ量が多いときはお勧めではありません。
ひな形シートの3行目までをピボットテーブルからデータソース参照しているため、余分な空白行(最終行)をカテゴリーにしてしまうので、その行を削除する手法です。
原本ひな形データシートの3行目、再右列の隣に「#S」記号を入れておきます。
#S は、Spacerの意味合いで、処理後に削除する行(分類項目の列位置)に指定します。
データをインポートする制御シートに、#行番号 を設定しておきます。
「#行番号」は、[固定値] を「%ROW」にして行番号を生成し、[区分] を分類項目(この例では「詳細行」)にしておきます。[整形対象部分の右下] を、ひな形データシートの3行目、#S 記号を記入した列のセルにしておきます。
この方法で (空白) カテゴリーはできなくなりますが、各行が分類カテゴリー(#行番号)となるため、データ量が多いときはかなり処理時間がかかります。
この手法を使う場合、原本ピボットテーブルの [データソースの変更] で3行分の範囲指定を前もってしておく必要はありません。 外部スクリプトがデータシートのレコード数を判断して、自動的に [データソースの変更] を行うからです。また同様に、[ファイルを開くときにデータを更新する] をチェックオンにしておく必要もありません。
また、処理速度も 1. の手法よりもかなり速く実行できます。
データインポート手順の下に、外部アプリ実行手順を加え、外部スクリプト(VBScript)を実行してピボットテーブルの更新を行います。
実行するファイル SCRIPT\PivotUpdate.vbs (この例では [SCRIPT] フォルダに配置)
⇒ スクリプトのソースコード(現在、このリンクは存在しません。)
コマンドライン引数
第1引数 出力ブックのパス名
第2引数 データシート名(この例では「データ」)
第3引数 ピボットシート名(この例では「ピボット」)
第4引数 ピボットテーブル名(この例では「"ピボットテーブル1"」)
作業フォルダ . (カレントフォルダを指定)
次の記事で、Excelでのピボットテーブル、ピボットグラフの作成方法を解説しましたが、ピボットのテンプレートブックを使った、xoBlosでの自動実行処理について記事にします。
ピボットテーブル、ピボットグラフを活用しよう! http://xoblos.hatenablog.jp/entry/2017/08/13/180832
上記の記事では、28,384レコードのデータを基にピボットテーブルを作成していました。しかし、次回の処理ではレコード件数はもっと少ないかもしれないし、多いかもしれません。その都度、データを入力し直して、ピボットテーブルを更新していくのも面倒なので、xoBlosを利用して、入力したレコード件数分でのピボットテーブル、ピボットグラフを自動実行で作ってみましょう。上記の記事で使ったブックを例に解説します。
上記の記事で作成したブックのピボットシートで、[ピボットテーブル ツール]-[オプション]-[データソースの変更] を選びます。
ダイアログの [テーブル/範囲] の最下行数を3行目に変更します。この例では、$J$28385から$J$3に変更しています。この3行目に変更するところが、xoBlosでの重要なポイントとなります。
グラフのタイトルを、自由に変更します(この例では「顧客別・商品区分別販売分析」)。ピボットシート名は、作成時は「Sheet1」のような名前が付きますが、自由に変更します(この例では「ピボット」)。
ピボットテーブルをポイントして、右クリック [ピボットテーブル オプション] を選びます。
[データ] タブで、[ファイルを開くときにデータを更新する] をチェックオンにします。
データシートのデータ行(2行目以下)をクリアします。
ブックを保存します。この例では、[03_TEMPLATE] フォルダに、原本_販売分析データ.xlsx という名前で保存しています。
xoBlos Designerで設定する手順は3手順のみです。
手順1:入力データを抽出してXMLファイルにする。
ExcelファイルやCSVファイルから、データを抽出してXMLファイルにします。制御シートを使用する方法、CSVからXMLへの変換手順を使う方法などがあります。
手順実行でXMLファイルになったことを確認します。
手順2:ピボット用のテンプレートブック(原本ブック)を、出力用フォルダにコピーします。
手順3:コピーした原本ブックに対して、抽出XMLデータをインポートします。
[ひな形シート名] は、データシートのシート名にしてください(この例では「データ」)。高速生成エンジンは必ずオフにしてください。
フィルタリング操作のオン/オフで、必要なフィールドのみを絞り込んで表示できます。
データ範囲を3行目までに設定した関係で、(空白) カテゴリーが作成されてしまいますが、気になるときは、軸フィールドのフィルタリングで (空白) をオフにしてください。
注記: (空白) カテゴリーをどうしても作成したくない場合は、ピボット作成時に(空白) カテゴリーを作成させない手法がありますので、こちらの記事を参照してください。
xoBlos の基本である、データの「抽出」と「生成」。その間に「加工」という編集の工程が入る場合も勿論あります。加工方法は様々あり、中間処理として「加工の為の生成」と「加工生成した情報の抽出」と、2手順いれることも手段の一つです。これは前回記事で復習してください。
また一方で、上図のようにXML to XML(XML ファイルから XML ファイルにする)の 1手順で、データを加工編集することも可能です。制御シートが要らないということですね。
‥‥しかしこの手順を用いる場合には、制御シートよりも専門的な設定ファイルを別に用意する必要があります。
上図例は単純に、入力データの既存項目「氏名」をコピーし、「氏名_Filler」という新たな列を追加させています。無論、コピーなので「氏名_Filler」にも「氏名」と同じ情報が保持されます。
加工編集とは言っても様々ありますので、その内容を xoBlos に教えてあげる為の設定ファイルは必要になります。またこの設定ファイルは、制御シートとは異なり XML形式でなければなりません。
さて、一通り設定ファイルの作成と業務の設定が完了し、実行してみました。‥‥ファイルを設置しパス(設置場所)も合っているのに、ファイルが存在しないと言われてしまいましたね。ファイルのアクセス権が問われているのであれば、エラーにその旨は出る筈。ともなれば‥‥ファイルの形式を疑ってみましょうか。
XML ファイルは、専用のエディタを使わない限りは大抵、メモ帳などのテキストエディタで作成することになると思います。保存する時は、拡張子やファイル形式に充分注意しなければなりません。拡張子の表示/非表示は、Windows の「フォルダオプション」にて変更しましょう。
アプリケーションの関連付け等を行っている場合はより判断が難しくなりますが、上図のようにアイコンの判断だけでは足りないのが明らかですね。右側のファイルの「種類」も確認するようにしましょう。
注意深く XML 形式でファイルも再保存しました。‥‥しかしまだ問題があるようですね。「無効な文字」やその位置情報も詳細に出してくれていますが、どうにも問題になるような内容を記述していないと思ったら、文字コードを気にしてみましょう。
上図のように、XML ファイルの先頭行にはどういう文字コードとして扱うかを明示します。しかし、ファイルを保存する際に設定する文字コードと内容に差があっては、正しく判断することができません。必ず一致させるようにしましょう。
Excelの機能の中でも、特に便利で優れた機能として、ピボットテーブル、ピボットグラフがあります。様々な観点からデータ集計・表示・ドリルダウン(詳細表示)ができ、クロス集計(縦横計算)とも呼ばれる機能です。
xoBlosでピボットテーブル、ピボットグラフを扱う方法は別の記事にまとめますが、この記事ではピボットテーブル、ピボットグラフの作成方法を簡単に紹介したいと思います。Excelのバージョンは、Excel 2010を使用しました。
まず、データシート内のセル(どれでも良い)を選択します。
リボン [挿入] タブの [ピボットテーブルの挿入] を実行します。[ピボットテーブルの作成] ダイアログに、自動的にデータ範囲が設定されますので、確認して [OK] ボタンを選びます。
シート上に作成のヒントが表示され、フィールドリストが作業ウィンドウに表示されます。
縦軸の観点にしたいフィールドを、[行ラベル] のボックスにドラッグします。ここでは、まず「顧客区分名」をドラッグし、次に「顧客名」をドラッグしています。
横軸の観点にしたいフィールドを、[列ラベル] のボックスにドラッグします。ここでは、「商品区分名」をドラッグしています。
集計したい値フィールドを、[値] ボックスにドラッグします。ここでは、「実績_売上高」をドラッグしています。
[ピボットテーブル ツール]-[オプション]-[集計方法] で、集計方法を選びます。ここでは、「合計」を選んでいます。
金額を3ケタカンマ区切りにしたいときは、値セルの列を範囲指定し、右クリック [セルの書式設定] で設定します。
クロス集計表が、瞬く間に完成します。
集計結果をピボットグラフにするには、[ピボットテーブル ツール]-[オプション]-[ピボットグラフ] から、グラフの種類を選択します。
グラフウィンドウにグラフが表示されますので、ウィンドウをマウスでリサイズして、適当な大きさ、位置に調整します。
グラフウィンドウの軸フィールドを選び、チェックボックスのオン・オフで、該当データをフィルタリングすることもできます(「顧客区分名」が「ネットショップ」、「商品区分名」が「缶詰」、「冷凍食品」など)。
ピボット操作が意外と簡単なのに驚かされますが、ルーティンワーク化したピボット処理を、xoBlosを使って自動実行する方法に関しては、別の記事にまとめます。