Designer:シート名に全角スペースは要注意!

シングルクォーテーションが判断出来ない

生成時、高速エンジンを使用すると結果のブックが破損することがあります。前回記事でも示しましたが、これは大抵のケースで高速エンジンの未使用にて解決します。高速エンジンの未使用は "Excel ならではで動かす" 為、処理は遅くなりますが、高速エンジンよりかは Excel 機能の大部分に対応が行えるという訳です。

f:id:xoblos:20190805163405p:plain

さて上図①ですが、2行の表内で別シートのセルと――更に別のシートのセルをそれぞれ参照しています。列「B」に書かれているのは列「A」が持つ式の内容です。‥‥生成高速エンジンではこの内、明細 1行目に表現されているようなシングルクォーテーションで囲まれる全角の空白(スペース)を含むシート名を解釈することが出来ませんExcel の仕様上、何処までがシート名を示しているのか区別する為に、シングルクォーテーションで囲むことになっているのです。

上図②は、シート「空白 シート」自身が持っている情報です。印刷範囲を設定すると、名前定義には自動でその情報が入ります。しかし下部の「参照範囲」は前述と同様シングルクォーテーションが含まれており、同じ問題が挙げられます。

"高速エンジンの未使用" 以外の対処法としましては(シート名にスペースが無いよう運用化して頂きたいのが本音ですが‥‥)、全角スペースから半角スペースを 2つに変更するか、或いは前回記事のように通常式から INDIRECT 式に記述を変えることです。「=INDIRECT("'空白 シート'!A1")」のように、シート名部分はただの文字列と見做されますので、破損することなく高速生成が成立するでしょう。

Designer:スキップする "行の" 条件だもの

xoBlos の世界での "行" とは?

xoBlos で取り扱うデータは、無論少なければ少ない程、処理は軽くなります。業務の作りに縁っては―― 1件と 100件の差では、速度の違いが実感出来ないかもしれません。

f:id:xoblos:20190723130058p:plain

上図は‥‥穏やかではありませんが、基本的なクロス表です。無論、セル「B3」を『データ部分の左上』にし、『行方向単位行数』と『列方向単位列数』いずれも「1」にして、各戦士(?)間の実績を抽出するのが相応ですね。これで、ケンカの詳細が無い(Null の)データと、ブチミケを抽出対象外とする場合、『スキップする行の条件』か『高度なスキップする行の条件』を設定しますが‥‥

f:id:xoblos:20190723130107p:plain

抽出キーワードを充分ご確認ください。『(高度な)スキップするの条件』です。たとえこのキーワードの仕様が分からなくても、行方向に読み取ろうとしている部分にしか効かないキーワードであるのは明らかです。つまり、ここでの抽出は「ブチ(が出した実績データ)のスキップ」しか、こなせないということです。

冒頭のとおり、事と次第ではパフォーマンス面が問われてきますが xoBlos は基本、抽出は全件+加工や最終生成時点で条件付けを、基本としています。

なお『高度なスキップする行の条件』は、前回記事のような恐ろしい罠が控えておりますので、ご注意を!

Windows:Windows Server 2012 などに .NET Framework 3.5 をインストールできないとき

Windows Server 2012 .NET Framework 3.5 をインストールできない。

xoBlos サーバー構築のための必須システム要件に、Microsoft .NET Framework 3.5 がありますが、Windows Server 2012 の環境に、.NET Framework 3.5 をインストールできずに手こずったことがあり、そのときの対処方法をメモします。

現象とエラーメッセージ

現象が起こったのは、インターネット接続がされていない Windows Server 2012 Datacenter の環境でした。

サーバーマネージャーから「機能」の追加で失敗。代替ソースパスでOSの評価版ソースの指定、製品版ソースの指定でも失敗。DISM コマンドでインストールしても失敗。

エラーメッセージは必ず「ソースファイルが見つかりませんでした。」が出ます。

グループポリシーを調整しても同様のエラー。

 

こんな場合の手がかりは、イベントビューア>Windows ログ>Setup に出ていました。

パッケージ microsoft .net framework 3.0 を有効にできませんでした。状態:0x800f0906

 対処方法

解決方法の手がかりは、下記のマイクロソフトサポート記事にありました。

Windows Server 2012 R2、Windows Server 2012Windows 8.1、または Windows 8 上でセキュリティ更新プログラム 2966827 または 2966828 をインストールした後で Microsoft .NET Framework 3.5 の機能を有効化できない

https://support.microsoft.com/ja-jp/help/3002547/you-cannot-enable-the-microsoft-net-framework-3-5-feature-on-windows-s

 

原因と対策をかいつまんで記述すると、以下になります。

 

原因

対策

  • この場合、更新プログラム 3005628 をインストールする。

Designer+Excel:「INDIRECT」関数の活用

見た目は複雑でも強い味方

生成の雛形シート上に Excel の関数をいれておくと、値の操作が楽になる場合があります。しかし時として「雛形シート」や「行/列ひな形」「エリアひな形」のような処理後に消えて仕舞う領域上を参照しなければ成らない式も、設定する機会があることでしょう。

f:id:xoblos:20190704134919p:plain

上図は列「A」と列「B」それぞれに、共通でセル「E3」を見る関数が置かれています。列「A」の方はセル番地をシステム値として見ていますが、列「B」の方はセル名で見ています。

INDIRECT 関数はセル番地を文字列で表現出来、その場所が物理的に存在すれば、周囲から行列の増減がどう起きようが、自身の行列が削除されようが、参照を保持します。

f:id:xoblos:20190704134926p:plain

‥‥しかしシステム値が文字列に成って仕舞いますと、オートフィルが使えませんね。少々手を加えます。

f:id:xoblos:20190704134933p:plain

上図の赤字の意味は、「自分自身のセルの行番号と、自分自身のセル位置から 3つ右の列番号の交点であるセル番地を物理的に参照する」という内容になります。‥‥複雑化しましたが、オートフィルの為だけとすると効果が薄いですね。

f:id:xoblos:20190704134940p:plain

xoBlos の雛形の如く、列「E」を削除してみましょう。‥‥列「A」のような、使い慣れているに等しい式の方は壊れて仕舞いました。しかし列「B」の方は参照を保持し、新たに列「E」に入った情報の表現を成立させています。

例えばシートとシート間で跨いで参照している関数を持つ既存資料や、常に出力するデータの直前データを比較参照するような生成要件等に、xoBlos の生成が関わる場合には、このような物理的参照を成す関数が必要になってくる場合があります。相対参照に強い関数(今回例の「ADDRESS」や「OFFSET」等)と組み合わせて、関数の破損(REFエラー)を回避しましょう!

通常関数から INDIRECT 関数の書き換えは、難しいものではありません。結局のところセル番地が REF エラーとなるので、その部分を文字列でカバーして仕舞えば良いのです。

例)
・「=A10」     → 「=INDIRECT("A10")」
・「=SUM(A1:A10)」 → 「=SUM(INDIRECT("A1:A10"))」
・「=IF(雛形シート!A1=出力結果シート!A1,"OK","NG")
         → 「=IF(INDIRECT("雛形シート!A1")=INDIRECT("出力結果シート!A1"),"OK","NG")」

corabo:システムエラーメッセージ

システム管理者には詳細なエラーを!

クライアントマシンの場合、corabo のエラーは下図のように出力されますが‥‥

f:id:xoblos:20190626112322p:plain

サーバマシン――つまり corabo その物が入っているマシンの場合、corabo のエラーは下図のように出力され、詳細の度合いが異なります。

f:id:xoblos:20190626112329p:plain

クライアントユーザは、それこそ xoBlos が全く無縁な方も有り得ます。そのような中、専門的エラーを出力されても仕方がありませんね。上図のとおり、システムレベルのエラーはサーバマシンの方が詳細に出力されますので、原因解明には先ずサーバマシン自身で、クライアントユーザと同じアクションを起こしてみてください。テクニカルサポートチームは、クライアント側のエラーキャプチャを送付頂いても、状況と原因は絶対に掴むことが出来ません‥‥

因みに画像例は、IIS で[C:\ xoBlosFileRoots]というサイト管理フォルダを設定したのにも拘らず、Cドライブ直下にそのようなフォルダが用意されていないということです。

Designer:繰り返し処理の参照項目

参照する項目の制限

手順の繰り返し設定をする際、下図のような設定画面に直面します。『f.読み込む項目』項は、繰り返し基準に相当する XML ファイル内の、値参照する項目を設定しますが‥‥。設定をし忘れて、それでいてその項目の変数をファイルパス等で使用し、エラーが起こって原因の調査に時間が掛かったというお話は、割とあります。

f:id:xoblos:20190610115226p:plain

当項は、実は未設定(空欄)にすると全項目を参照可の扱いにしてくれます。設定のし忘れや、変更対応にも強いですね。

では何故、具体設定が存在するのでしょうか。‥‥上図の下部、当項の詳細をご参照ください。データ件数が少ない内は余り意識されないかもしれませんが、取り扱う項目(列)が一つ増えるだけでどれだけの情報量が増え、処理に負荷が掛かるかということを――。

Designer+xobQuery:重複の取り除き「DISTINCT」

設定内容を持ったファイル

前回記事で、三つ目の繰り返し基準ファイルの作成法をご案内しました。今回は xobQuery での作成法を示しましょう。

こちらは XML to XMLCSV to XML が可能ですので、「一時生成~再抽出」の工程より、手順を一つ節約することが出来ます。‥‥SQL を得意とされている方は、既に承知されていることでしょうね。

●「DISTINCT」は "重複を取り除く" !
 SELECT DISTINCT 一意に出したい項目[, キー項目]‥‥ FROM テーブル

例)
・「-i XML\抽出データ.xml/tbl -o XML\繰り返し基準ファイル.xml -q "SELECT DISTINCT 事業所 FROM tbl"」
・「-i XML\抽出データ.xml/tbl -o XML\繰り返し基準ファイル.xml -q "SELECT DISTINCT 事業所, 部門 FROM tbl"