VBEにある参照設定を見ると、実にさまざまなものを参照できる事が分かる。

昔は実行ファイルにiniファイルなんぞを併せて付けていたものだ。Excelで組んだシステムでもそうしていたが、最近はxmlを使うようにしている。ステップ実行した限りではiniより読み書きが断然速かった経験があるからである。

このときには Microsoft XML, version 2.0 を参照している。もっと新しいものもあるのだが、客先のOfficeが古く、参照エラーが出たことがあったので一番古いものにした次第である。


ただ、オブジェクトブラウザで内容を見ても「どうやって使うの?」と分からないことが多い。先述のxmlでもインターネットでサンプルを探し、メソッド名やプロパティ名から推測し、となんとかかんとか使っている状態である。

その点、Javaなんかはコメントの書き方にもよるが、ソースコードからかなりの情報を生成できる。VBAで提供されている参照用ファイルも同じように提供されていると有り難いと思う。


逆に、この不親切さがVBAの可能性を狭めているのかもしれない。例えばAdobe Acrobat関連の参照設定も可能なのだが、何ができるのか調べようと考える人はあまりいないだろう。居てもどうやって使うのか、このメソッドを使うための前提条件は何か、などの情報がないとなかなか前に進まないだろう。これが仕事でなら「やれるかどうか分からない」ようなものに時間を割けるほど余裕のある方もそういないだろう。こういうものを活用できればVBAの活用範囲はもっと広がるのでは?と思っている。

もしかするとMSDEなんかにドキュメントがあるのだろうか?ご存じの方はご一報願いたい。

Excelに取り込んだデータを並べ替えたり集計したり重複を抜いたりしなければならなくなりました。そういえばODBCの設定にExcelのドライバがあったよなと思い出し「ExcelをDBのように使えるはずだよな」と調べてみました。
こんなサイトがありました。
http://support.microsoft.com/kb/257819/ja
ここに丁寧に書いてあります。しかし、概論と各論を番号などで区分けしたりしていないので読みにくいです。


上記サイトにはアクセスする際の定義が3パターンほどあります。

・Microsoft Jet OLE DB Provider
・Microsoft OLE DB Provider for ODBC Drivers DSN指定
・Microsoft OLE DB Provider for ODBC Drivers DSN指定なし
Jetを避け、ODBC 設定が不要な、上記の最後の方法で行いました。ブック名をそのまま書けるので便利です。ブック名を変数化することも可能です。


使っていてのノウハウは

・「保存されているブックのデータでないとダメ」のようです。
・通常のSELECT、テーブルのJOINも可能。

・DELETEができなかったので、使わない項目を削除フラグとして扱い、UPDATEで書き換え、SELECTで条件に入れた。

・更新系も参照系も.Executeメソッドを使います。

・参照系はレコードセットにsetしましょう。


これだけは!という注意点は

・型を自動判別するため、SELECTがうまくできない場合がある。SELECT対象項目なら空白項目はすべて埋めておかないと思惑どおりの結果を返してくれない場合があります。これは明記してあるのですが、体験すると面食らいます。

この記事に目を通し、上記サイトを見れば少しは読みやすくなっているかと存じます。

Excel VBAで仕込んだものはローカルコンピュータに配布している。サーバーに置いてみんなが読取り専用で使う、ということはできるかもしれないけれど、いろいろと怖いのでしたことがない。


社内LANで事足りるならサーバー上から取得するようにすればいいだろう。しかし、顧客先と開発会社が違うとか、同一LAN上にない場合、顧客先と開発会社でサーバーを共有しているケースは希だろう。よってサーバーからコピーして使う、という訳にはいかない。メールで配布して「変更してね」という手も、全員ががバージョンアップをしてくれる保証はないし、ユーザーに負担をかけるのでよい方法ではない。


・起動時に最新モジュールになること。

・メンテナンスはお客さん先に出向かなくても済むこと。

ならとてもラクである。


顧客のメールサーバーが外部サーバーを利用していたので、そのFTP機能を利用してモジュールの受け渡しができるような仕組みを考えた。





具体的には起動ツール を使ってWebサイトから最新のモジュールをダウンロードし、それを起動するようにしていた。メンテナンスに関しては非常に楽で、バージョンアップ漏れもなくなり、顧客先に出向く回数は激減した。プロトコルはFTPでもHTTP、HTTPでも問題ない。


ただし、その起動ツールがお客さん先で動作するかは必ず確認が必要である。ネットワークの設定で、FTP禁止、HTTPSも設定しないとダメ、などの制限があることがある。古いアプリを使い続けるために環境をいじりたくない、という話もよくある。


バージョンアップ方法はよく検討する必要がある。