2010/06/01

痒いところに手が届かない

Excelで報告書の雛形を作っておいて、言語アプリで項目を埋めて報告書を仕上げる業務フローは多くあります。


タイトル欄、内容欄、規定値、入力欄など、項目の性質は幾つか種類に分かれます。



    タイトル欄 => 製品名

    内容欄   => ハイブリット電球

    規程最大長 => 135mm

    個別実測値 => (実際に測定して、Excelシートに記入)

(*)製品規格通りに生産されたかのチェックシートとして使用



内容欄と、規程最大長は 言語で埋めて、個別実測値欄のみ入力する仕様です。

入力欄は個別実測値のみなので、規定最大長などの個別実測値欄以外はロックしたいです。

これが、一筋縄はできない。

そもそも、EXCELのセルロックの手順がスッキリしない。セルの属性で「保護」頁に「ロック」のチェックボックスがあるのだが、何故か。デフォルトでチェックが入っている。

ても、シート保護しないと、有効にならない。



言語でシートの項目に値を埋めていくのは ADO.NET の Excel-Provider を使えば、 excel.object を介さずにできるので、便利です。

(*)Excel objectは、異常時にタスクが残ったりするので、、いろいろ回避策が必要なので、使いたくない。

でも、予めシート保護していたら、項目書き込みができないのです。雛形レベルでシート保護はできない。

言語で、項目を埋めて、シート保護して、ユーザーに公開したい。

シート保護のステートメントをマクロで組み、(ActiveSheet.Protect,ActiveWorkbook.Save)

これは、 Excel Objectを介して、それほコールする。(xlApp.run("SheetHogo"))

どうにか、動作はしているが、スマートとは言えない。

VSTOを使えばスマートになるのかも知れないが、Visual Stdio 2005だと、ライセンスがない。

言語で埋め込むのでなく、ExcelマクロがDBを見に行って埋め込んで、自分でロックするのかな。

でも、VBAでDataアクセス処理は書きたくない.....(我が儘だなぁ)

ありがちな業務フローだと思うのだが、他の人はどのようにしているのだろう。

0 件のコメント:

コメントを投稿