Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13558 / 76732 ←次へ | 前へ→

【68677】Re:CreateObjectについて
発言  kanabun  - 11/4/5(火) 7:40 -

引用なし
パスワード
   ▼Masa さん:
>ComboBoxの処理で検索をしましたら[68465]に以下の
>記述が見つかりました
見たことのあるコードですね(^^

>しかし、ここでCreateObjectが理解できないのです

"Scripting.Dictionary" (とか "Scripting.FileSystemObject" など)の
プログラム(コンポーネント)は、ExcelVBAから見ると
「外部ツール」ですよね?
「外部」ツールなので、何らかの方法で呼び出してオブジェクトを作成
してからでないと使えません。

外部ツールを呼び出すひとつの方法がCreateObject関数です。

 Dim dic As Object 'オブジェクト変数の宣言
 Set dic = CreateObject("Scripting.Dictionary")
 ' ↑"Scripting.Dictionary"のオブジェクトを一時的に作成し
   これを変数dic にセットします。以後、Dictionaryの機能が
   利用可能になります。

外部ツールを呼び出すもう一つの方法はあらかじめそのライブラリを
「参照設定」しておく方法です。Dictionaryクラスを例にとると
VBEメニュー[ツール]-[参照設定]から
Microsoft Scripting Runtime ライブラリにチェックを入れておきます。
すると、

 Dim dic As Dictionary
 Set dic = New Dictionary

のようにして、Dictionaryの機能(プロパティ、メソッド)が
プログラム内で利用可能になります。


> Set dic = CreateObject("Scripting.Dictionary")
のような呼び出し方は、プログラムが実行を始めてから(走り出してから)
外部プログラムを呼び出しているので、実行時バインディングと呼ばれてます。
対して
後者の「参照設定」の
> Set dic = New Dictionary
方法は、あらかじめプログラムにDictionaryオブジェクトを仕込んでおく
ので、事前バインディングと呼ばれます。
事前バインディングにより外部プログラムをセットしておくと、
コードを記述するとき、そのオブジェクトのプロパティやメソッドが
(dic. とピリオドを打つと)表示されます。また、あらかじめ仕込んで
あるので、実行時のパフォーマンスも(一般的に)向上します。

1 hits

【68672】CreateObjectについて Masa 11/4/4(月) 11:05 質問
【68677】Re:CreateObjectについて kanabun 11/4/5(火) 7:40 発言
【68678】Re:CreateObjectについて UO3 11/4/5(火) 11:56 発言
【68679】Re:CreateObjectについて kanabun 11/4/5(火) 19:29 発言
【68680】Re:CreateObjectについて Masa 11/4/6(水) 8:30 お礼

13558 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free