ExcelOpenについて

 作成したひな形にExcelOpenスイッチを指定すると、ブラウザでダウンロードしたクライアントのExcelを直接開くことができます。
 この開いたExcelで修正したデータを、データベースに適用できる仕組みにするためのひな形を自動作成することができます。
 自動作成したひな形は、送信に必要なマクロや送信ボタンと設定が含まれており、送信ボタン押下でデータベースに値を反映することが可能となります。

1)ExcelOpenのひな形の自動作成
 ExcelOpenとして利用したいひな形を用意し、XCuteナビゲーション->ExcelOpen_Help を実行すると、
 自動で必要な行列とマクロ、ボタンの差し込みが行われます。
 ExcelOpen_Helpを実行した時の動作を「test.xlsb」プロジェクトを利用して解説します。

1-1)準備と実行
 ExcelOpenのひな形の作成元となる画面を「sample」シートに作成し、XCuteナビゲーションの「ExcelOpen_help」を実行します。
 ※既存のファイルを利用したい時は、プロジェクトファイルと同一エクセル上で該当ファイルを開いて実行します

1-2)ExcelOpenヘルプダイアログ
 ダイアログが開くので「OK」ボタンを押下します。

1-3)ExcelOpenダイアログ
 ひな形の作成が完了したら、ダイアログが開くので「完了」ボタンを押下します。

1-4)ExcelOpenにひな形作成完了
 ExcelOpen用のひな形が新しいエクセルブック「S_sample.xlsm」で自動生成されます。
 ※ExcelOpen用の新規ファイル名は「S_ + 指定したひな型シート名」となります

1-5)印刷範囲の設定
 ExcelOpen用のひな形で、表示したい領域を印刷範囲として指定します。

1-6)ExcelOpenの設定の確認
 ExcelOpenでデータの送信実行時に必要な設定を確認します。
 R5C9セル:送信するセルの範囲を指定
 R5C13セル:送信ボタン押下時に実行されるコマンドを指定

1-7)入力規則の設定・確認
 データ更新の対象となるセルに入力規則を設定します。
 ExcelOpenのデータ送信は @R5C11セルの範囲内 かつ A入力規則を設定済 に該当するセルのみ行われます。

1-8)処理機能の作成
 ExcelOpenで送信したデータを処理するシートを作成します。

@ ひな形ブック「test.xlsb」に「sample」シートを作成し、ExcelOpenのひな形と同位置に同じ入力規則を設定します。


A 「名前」欄を必須項目にするため、R13C8セルに入力規則を設定します。


B 入力規則で発生したエラーを、メッセージダイアログで表示するための設定を行います。
 R2C3セル:VALIDATIONERR=r6c1
 R3C8セル:数式「="Message="&R6C1」
 ※開いたExcelOpenで送信ボタンを押下後にブックを閉じるためには、Messageを表示する必要があります。
  処理が正常だった時でも「Message」コマンドは設定し、正常処理メッセージを出力するようにしてください。

1-9)動作確認
 作成したExcelOpenのひな形を開き、データを送信していることを確認します。

@ S_sample.xlsm の sample シート上でR5C13セルを変更して送信ボタン押下後のコマンドを「WriteSheet=sample」に変更し、「WriteSheet」を実行します。


A ブラウザが開き、エクセルファイルがダウンロードされるので選択します。


B 保護ビューの警告が出た時は「編集を有効にする」ボタンを押下します。


C セキュリティの警告が出た時は「コンテンツの有効化」ボタンを押下します。


D ひな形の印刷範囲で指定した領域が表示されます。


E 「名前」欄以外のデータを設定し「送信」ボタンを押下します。


F R13C8セルの入力規規則で指定したエラーメッセージがメッセージダイアログで表示され、ExcelOpenのファイルは閉じます。


G Bookファイルを開き、送信ボタン押下時の処理を確認します。
 R1C8セル(実行されたコマンドがセットされるセル)の値が「WRITESHEET=samplee」であり、
 ExcelOpenのひな形のR5C13セルに指定した「送信ボタン押下時に実行されるコマンド(WriteSheet=smaple)」が実行されたことが確認できます。
 また、入力した値がBookファイルにセットされ、入力規則違反でVaridationエラーが発生してR6C1にエラーメッセージが出力されており
 R3C8セルの数式が評価されて「Message=名前は必須項目です。」になっていることが確認できます。


2)ExcelOpenの解説

2-1)イベント毎の処理の説明
 自動作成したExcelOpenのひな形は、マクロを含んだファイルとして新規作成されます。
 クライアントでダウロードしたExcelOpenファイルで、イベント発生時の処理概要を説明します。

@「戻る」ボタン押下時
 マクロの「Modoru」がCallされ、ExcelOpenを閉じます。

A「送信」ボタン押下時
 マクロの「Sousin」がCallされ、5行目の各種パラメータをもとにデータ送信を行います。

2-2)自動作成したExcelOpenのひな形の修正方法
 ExcelOpenのひな形の修正は、web画面とは異なる手法となります。
 自動作成したひな形を修正する手法を説明します。

@ 更新画面を作成する時の、推奨する画面構成
 送信ボタン押下時にはR5C13セルに記述したコマンドを実行しますが、
 更新処理に利用するひな形シートは自動作成で作成されたファイルを利用せずに、上記解説のように別シートを利用して
 ExcelOpenで開いたひな形とデータを受け取って処理を行うひな形を分けることを推奨しています。
  入力規則等の数が多く、ExcelOpenのひな形と処理を行う受け取りシートを同じにしたい場合は、R5C13セルの送信ボタン押下時のコマンドに
 制御のためのフラグを付与し、Messageコマンドの制御をするなどの工夫をしてください。
 送信ボタンのコマンド指定には、&(アンパサンド)を利用することができます。
 例:WriteSheet=sample&Set_R6C1=UPD

A 入力欄以外の箇所を変更不可する方法
 Protectスイッチを利用して、入力エリア以外のセルにプロテクトをかけます。

B 新しい入力欄を追加する方法
 1)入力規則を設定
 2)セルの書式設定でロックのチェックを外す

※入力欄以外のセルのロックのチェックは、クライアントに配信される時にシート全体の保護をするための設定です。
 チェックがオンのセルにおいて、ExcelOpenで開いた時に入力不可となります。

C 送信ボタン押下後にExcelOpenのブックを閉じないようにする方法
 送信メッセージの文言をチェックし、ブックの開閉を制御することができます。下記手順で修正してください。
 1)ExcelOpenにひな形のR6C11セルに文言を設定
 2)送信ボタン押下時の対象シートで、表示するMessageコマンドに1)でセットした値を含まないように変更

 修正例:正常処理時は送信OKダイアログを表示してブックを閉じ、エラー発生時はエラーダイアログを表示してブックを閉じない処理の場合
 ・ひな形の修正
  ExcelOpenのひな形:R6C11セルに「OK」と設定
  受け取り側のひな形:Messageコマンドでエラーがない場合に、ExcelOpenのひな形のR6C11セルで設定した「OK」を含む文言「送信OK」を設定
  

 ・上記修正後の動作
  ●エラー発生時
   メッセージに「OK」を含まないため、ブックは閉じずに開いた状態が継続します。
  

  ●正常処理時
   メッセージに「OK」を含むため、ブッがは閉じます。
  

参照
 ○
ExcelOpenスイッチ