VBAと日々のこぼれ話

  1. VBA

【VBA】参照設定とCreateObject

参照設定の有無は書式名が異なる

これまでADO(データ接続)でのやFSO(ファイル・フォルダ操作)時に、参照設定を行うコードと参照設定が不要なコードを紹介してきました。

実際にコードを書く際にまず気になる参照設定の有無を呼称していましたが、それぞれの書式には名前があります。

参照設定を行う書式:アーリーバインディング書式(事前バインディング)
参照設定不要な書式:レイトバインディング書式(遅延バインディング)

※サンプルコードを紹介は、今まで通り参照設定の有無で呼びます。

書式名を見ても何となく伝わると思いますが、二つの書式を比べたときにその処理速度はレイトバインディング書式の方が遅いです。

理由は、型の指定を明示的に行っていないので処理実行時に毎回オブジェクトの型の解釈が必要だからです。

【スポンサーリンク】



例)FSOを利用したファイル操作

レイトバインディング書式では変数の宣言で汎用性のある型「Object」という容器を作り、「Set FSO=CreateObject(“Scripting.FileSystemObject”)」で初めて変数に設定するオブジェクトのチェックを実施します。

よって、アーリーバインディング書式のように変数宣言時に初めから型が明確なものと処理速度に差が出てしまう訳です。

とは言っても大量に処理を実行させないと速度の差は人間は体感できません
(計測して数値化すると認識できますが、0.1秒とか1秒差程度では正直気になりませんよね)

【スポンサーリンク】



どちらの書式を選択するか

処理の高速化、自動コード補完機能という点で、他のサイトではアーリーバインディング書式でのコードが優勢のように見えます。ただ大量の処理を実行することがない限り、処理速度に関してはあまり実感することがないかもしれません。

そうなると、アーリーバインディング書式では目立った魅力は自動コード補完機能ですね。

ですが色々なバージョンで使うことが想定されていると、レイトバインディング書式の方が汎用性はあります。
経験上、処理件数は多いながらもコーディング規約で「レイトバインディング書式」縛りのシステムもありました。

要は、その処理が誰にどうやって使われるかによって使い分けが必要です。

VBAの最近記事

  1. 【VBA】(VBAを始めたばかりの人が陥りがちな落とし穴) Excelシートの最終行を取得…

  2. 【VBA】QRコードを作成したい

  3. 【VBA】CSVを1行ずつ処理したい

  4. Excelシートの最終行を取得したい その1

  5. 【VBA】未だに苦手としていること

関連記事

【スポンサーリンク】




PAGE TOP