一覧表形式のExcelOpen

 ExcelOpenを利用すると、ブラウザでダウンロードしたクライアントのExcelを直接開くことができ、開いたExcelで修正したデータをデータベースに適用できます。
 一覧表形式のExcelOpenは単票のひな形と異なり、出力データの件数によってデータの送信範囲が多くなります。
 そのため、送信ボタンを押下した時にデータの送信に時間がかかってしまい、タイムアウトになるという事態が発生する可能性があります。
 この事態を防ぐため、一覧表形式のExcelOpenでは、データの変更が発生した行のみを送信する仕組みを実装することを推奨しています。
 

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

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でデータの送信実行時に必要な設定を確認します。
 R5C11セル:送信するセルの範囲を指定(最終行はヘッダ行12+データの書き込み件数を数式で作成)
 R5C13セル:送信ボタン押下時に実行されるコマンドを指定
 R8C2:送信のスタート行(デフォルトは11)
 R8C3:1レコードの行数
 R13C1:「NoPost]を設定(ExcelOpenの指示詞)

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

1-8)送信先(送信ボタン押下時に実行される機能)の作成
 送信ボタンのコマンドに指定した「WriteSheet=sample_R」のシートを作成します。
 ExcelOpenのひな形と開始の行列セルを同一にし、行数はデータの最大行を想定して設定してください。
 NoPostだった行は更新しないよう、1行目に「NoRead」を表示する数式をセットし、最終行の次の行に「DataEnd」を設定します。
 R3C8セルには「OverRead=sample,R4C8」、R3C9セルには「Message=送信OK」を設定します。

1-9)マクロの追記
 「S_sample.xlsm」を「Visual Basic for Applications」で開き「sample」シートに下記を追記します。
 Excelに変更があった時に実行され、該当レコードの1列目を「Post」に変更します。

2)動作確認

@ 作成したExcelOpenのひな形で「sample」レポートを作成します。
 ExcelOpenを開いた時のデータ表示と、データ更新に利用するレポート「sample」を作成してマッピングします。
 名前フィールドをキー指定に設定し、ひな形シートは自動作成で作成した「S_sample.xlsm!sample」とします。


A S_sample.xlsm の sample シート上で「WriteReport」を実行します。


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


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


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


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


F 動作を確認するため、非表示の列を再表示します。※通常の利用では不要です


G 動作を確認するため、非表示の行を再表示します。※通常の利用では不要です


H 表示データのうち、3行の年齢を修正します。


I 修正した行の1列目が「Post」に変更されたことを確認し「送信」ボタンを押下します。


J ダイアログが表示されるので「OK」ボタンを押下します。


K Bookファイルを開き、送信ボタン押下時の処理を確認します。
 このように、ExcelOpenのひな形の「Worksheet_Change」を利用することにより、
 変更が発生したレコードのみをサーバに送信することが可能となります。

参照
 ○
ExcelOpenスイッチ