【IT】【入社1年目で知っておきたい】<VBA>参照設定とは・利用する際の注意点 ~開発現場の魔物
趣旨・前提
新人に対して、VBAの参照設定について指導する機会があったのですが、
新人から「これって考えずにチェック入れても大丈夫ですか?」と訊かれ、
どうかなぁと思い、リスクとか注意点などがあるかを改めて調べてみました。
<ターゲット> ・若手SE ・VBAとは何かを知っている人・VBAの参照設定を何となく使用している人
目次
No | タイトル |
---|---|
1 | 参照設定とは・注意点 |
2 | 対策:VBAツールを実行する環境を確認しよう |
3 | 経験談:証券のユーザに詰められた2年目の冬 ~開発現場の魔物~ |
1.参照設定とは・注意点
・参照設定:パソコンにインストールされているライブラリを、VBAから使えるように参照する仕組みのこと。
・メリット:VBAからIEやWord、ActiveXやADOなど、外部のソフトウェアを利用することができるようになる。
VBA オートメーション、参照設定、ライブラリ、タイプライブラリ、DDE、COM、OLE、ActiveXなどの用語整理。ついでに.NETも。 - t-hom’s diary
・注意点:どんなライブラリを組み込むかの情報はブックごとに記録されますが、そのブックを開いたパソコンに、そのライブラリがインストールされている保証はありません。
もしインストールされていない(存在しない)ライブラリが参照設定されていた場合は、[参照設定]ダイアログボックスに「参照不可」と表示されます。
・参照設定を含むファイルを他のPCで開くと、コンパイルエラーになる場合があります。
・通常は実行環境に合わせてライブラリのバージョンも置換されますが、上手くいかないこともあるようです。
・解決策として、実行環境にそのライブラリをインストールすればよいのではないかと考えますが、各ライブラリにはライセンスがあるし、たとえ配布可能なライブラリであったとしても、単にファイルをコピーしただけでは動作しない。レジストリに登録する必要があります。
「VBAには無い機能(オブジェクト)」を収めたファイル(拡張子が.dllや.old.やtlbのようなファイル)
※参照リンク
http://officetanaka.net/excel/vba/tips/tips100.htm
http://www.stdio.jp/entry/excel_vba/different-version-release
https://blogs.yahoo.co.jp/name_voyage_earth/8385390.html
実行環境の差異により、コンパイルエラーが発生した場合、「参照不可のライブラリ」の設定を手動でUncheckすると解消しますが
以下2つのケースが存在することに注意しなければならないでしょう。
「参照不可のライブラリ」が、ツールにて未使用なライブラリの場合
⇒Uncheckするだけで問題ない「参照不可のライブラリ」が、ツールにて使用しているライブラリの場合
⇒別のライブラリをCheckすれば機能する場合もあるが、使用していたライブラリではなく、別の手段で実装する必要がある
例:CreateObjectを使用する(いはゆる「レイトバインディング書式(遅延バインディング)」で実装する。) VBA 参照設定とCreateObjectを定数1つで切り替えるテクニック - t-hom’s diary
<★ポイント>
早い時期にプロトタイプを作成し、ユーザの実行環境で動かしてみることが大切!
この実装方法ではまずいよねということが、事前に検知可能!
2.対策:VBAツールを実行する環境を確認しよう
通常、SIerにおける実案件では「ユーザの実行環境を確認する」というプロセスがある。
【いつ】見積時・受注後のKickOff MTG の場など
【確認対象】
- OS・バージョン
- OSのBit数
- Microsoft Office(Excel)のバージョン
- Microsoft Office(Excel)のBit数(32/64bit) などなど
https://www.cloudsolution.jp/office365/blog/difference-32bit-and-64bit-of-office.html
※参考
ユーザ:引合(≒ユーザの見積依頼)⇔当社:見積
ユーザ:発注⇔当社:受注(契約成立)
https://www.makeleaps.jp/見積書→納品書→請求書→領収書の役割と流れ/
https://keiri-soumu.jp/keiri/article/basics_of_keiri_and_flow_of_business_documents
3.経験談:証券のユーザに詰められた2年目の冬
開発では動いたのに!いざ、本番リリースすると動かない!!(泣
本番環境と開発環境の差異に我々SEが、どれだけ苦悩したことか・・・・
本番環境と開発環境の差異というのは必ず存在し、リリースのリハーサルを行っても検知できないエラーが発生しうります。
非エンジニアの方には何のこっちゃという感じだと思いますが、そういうことがあるんです。
以下、私の経験ですが、蛇足。
私も2年目の冬、既存VBAツールの改修(微修正)だけで200万くらいぼったくった案件にアサインされました。 (お客さんを騙すわけではなく、リスク分を積んでるだけだね!) 「何事も経験だよ~」とか言われながら、ユーザ窓口・概要設計・詳細設計・製造・テスト・実施まで全部1人でやらされ、リーダーは助言のみしてくれるという・・・ 期間:2か月で見積もっていたところを、1か月くらいでリリースまで漕ぎつけた。 リーダーも「ただのクライアントツールだし、修正の影響範囲を考慮しても、ツールをユーザにメール納品するだけで大丈夫だよ~」とか言ってたので、 当然ユーザの承認もいただいた上で、本番環境へのリリースは立ち合いをせず、ユーザサイドでリリースを行った。 しかし、いざユーザサイドでリリースしてみると「変なエラーMSGがでるんですけど・・・・」とか電話きて・・・・ ユーザテスト(UAT)で検知しろや!ってのが本音ですが、めっちゃ、証券の人に詰められました。 「業務影響はないのか!なぜないと言い切れる?理由が不明確だ!再発防止策はどうするんだ!」などなど。 2年目ということもあり、お客さんも教育的見地で叱ってくれたように感じましたが。 エラーの詳細は割愛します。 私の帰責ではなく、超、ユーザの環境が特殊だった(Officeの言語設定がなぜか中国語だった!)ので、また、ツール自体は(MSG以外)動作したので、事なきを得ましたが・・・・・ とにもかくにも、本番環境と開発環境の差異という魔物が潜んでいるわけですね。
以上。