|
分類:[VB.NET/VB2005 以降]
今扱っているシステムで、wordに関して特殊なやり方をしています。
システムの概要としては某資格試験の問題管理を行っているシステムで、
言語 :VB.net DB :SQLServer2012 問題文の保存形式:word文書をSQLServerにバイナリ保存
といった内容です。
画面項目にOLEコンテナチックなコントロール(OLEコンテナではありません自生クラスです) が配置されておりクラスのダブルクリックイベントでコントロールにある問題文が、 Wordで起動する(ファイル名はDBに保存しているものでなくテンプ領域に機能ID.tmp.docの形式になる) といった見た目です。
ここで特殊なのは、Form_Loadイベントでコントロールに DBに保存したバイナリデータを読み込んでGetObjectForIUnknownメソッドでOLEオブジェクトとして生成し、 ダブルクリックイベントではそのOLEオブジェクトをコピー新規のような形で Wordで表示する(これも一般的なWordオブジェクトを使うのではなくDoVerbメソッドをつかいOLE動詞命令として開いている) 仕様になっている点です。
やっている中身は、OLEコンテナやWordオブジェクトのopenメソッドを使うのと大して変りないのかもしれませんが、 わざわざ古い技術を使っている感じで、 ロジックの難解化を招いており、ちょっとした改修でも多大な工数(主に調査とテスト工数)がかかってしまう現状になっています。
当面は、この仕組みを変えるほどの予算は出ないと思いますが、 数年先(2020年ごろ)のシステム全面見直しの際に、 OLEコンテナ or 素直にWordオブジェクトでWordマクロチックなコードで実装するやり方に変える提案をお客様にしようと考えています。 その場合、逆に、ole32.dllの関数群を直接呼び出すやり方を使用しなくするときのデメリットは何が考えられるでしょうか?
思いつくところをお答えいただければ幸いです。 よろしくお願いします。
|