Setコマンド(サブコマンド)
Setコマンドは、WriteSheetコマンド、WriteReportコマンド、ReadReportコマンドと組み合わせて使う、サブコマンドです。
XCuteでは、Excelの印刷範囲がHTML変換されてブラウザに渡されます。これとは逆にブラウザからExcelに値を引き渡す仕組みが必要で、それを実現しているのがSetコマンドなのです。
Setコマンドの性質上、このコマンドが指定されるのはURLやフォームの中に限られます。また、XCute内で擬似的にURLを指定するコマンド連鎖でも使われます。
メインコマンドとSetコマンドで指定されたクエリー・ストリングをXCuteがサーバ側のExcelで受け取ると、まず、メインコマンドを調べひな型シートを見つけ出しそのコピーを作成し、その後にSetコマンドをExcelに展開し、画面を再生します。この時、Set先のセルに入力規則が設定され且つエラーメッセージが設定されていれば、値を書きこんだ後に入力規則のチェックが行われ、エラーが発生したなら、処理を中断してブラウザに戻りエラーメッセージを表示します。
また、ひな型シートにExcelの入力規則を設定すると、このSetコマンドが自動で作成されます。
書式
Set_RyCx=値
Setコマンドの配列化
Setコマンドは配列化もサポートされています。 配列化は、複数選択可能なリストボックスや、複数選択してのファイルアップロードなど、入力規則は一つだが、複数のアイテムを選択、指定する場合に用います。
例:
以下のようなリストボックス(複数選択)を定義した場合
AAA <---
選択
BBB
CCC <--- 選択
上記のように、複数(AAAとCCC)を選択できます。
・Setコマンドを配列化しない場合の例:
リストボックスは入力規則により作成します。 属性差込位置に、|mutiple=multiple|Name=Set_R10C10
と定義されているものとします。
発行されるSetコマンドは以下となります。
Set_R10C10=AAA
Set_R10C10=CCC
同一番地のSetとなり、R10C10にセットされる値は後勝ちの「CCC」のみ となります。 このままですと複数選択可能な場合、最初に選択された値を取得することが出来ません。
・Setコマンドを配列化した場合の例:
リストボックスは入力規則により作成します。 属性差込位置に、|mutiple=multiple|Name=Set_R10C10[V]
と定義されているものとします。
発行されるSetコマンドは以下となります。
Set_R10C10=AAA
Set_R11C10=CCC
縦に行番地が足された形のSetとなります。番地が重ならないので、 「AAA」と「CCC」の値が取得できるようになります。
利用可能バージョン
XCute
Build
(12or13).13.12以降
書式
Set_RyCx[H|V]=値
「H」と「V」は、Setの展開方向です。Hは水平方向、Vは垂直方向にSetコマンドが発行されます。
なお、ファイルアップロード の、属性差込位置に、|mutiple=multiple|Name=Set_R10C10[V] と定義すれば、複数選択ファイルのアップロードが可能となります。
Setコマンドで値を戻す時のエラーチェック
下記は、ひな型のあるセルに入力規則を文字列とし、空白を無視しない設定を行い、エラー・メッセージも設定します。
このセルの値を空白にした時のExcelのエラーをブラウザにおいても以下のように表示します。
なお、Setコマンドはセキュリティ・ホールを生みやすく、proles.Ini
ファイルのSetCommandLevelで、Setコマンドが認められるセルを指定できます。
proles.iniのSetCommandLevelとSetコマンドが禁止される領域(セル)
SetCommandLevel | Setコマンドが禁止される領域 |
-1 | 禁止領域はなし |
0 | 1〜3行と;htmltagの右下(タグ差込領域) |
1 | 上記0と印刷範囲の入力規則未設定のセル |
2 | 上記0と全ての入力規則未設定のセル |
適用位置
ブラウザURL、フォーム
参照
○Proles.iniファイル