CreateObject関数
CreateObject関数は、ActiveX オブジェクトへの参照を作成して返します。
CreateObject関数を使う事で、参照設定することなくActiveX オブジェクトを使用できるようになります。
CreateObject関数の構文
内部処理形式が文字型 (String) のバリアント型 (Variant) の値を指定します。
作成するオブジェクトのクラスとアプリケーションの名前を指定します。
指定文字列の大文字小文字は問いません。
内部処理形式が文字型 (String) のバリアント型 (Variant) の値を指定します。
作成するオブジェクトを保存するネットワーク サーバの名前を指定します。
ローカル マシンで使用する場合は、空の文字列 ("") を指定します。
引数 class は、appname.objecttype の形式で指定します。
appname
内部処理形式が文字型 (String) のバリアント型 (Variant) の値を指定します。
オブジェクトを提供しているアプリケーションの名前を指定します。
内部処理形式が文字型 (String) のバリアント型 (Variant) の値を指定します。
作成するオブジェクトの種類またはクラスを指定します。
オブジェクトを作成できなかった場合はエラーを返します。
CreateObjectの解説
・CreateObject関数の戻り値をSetステートメントでオブジェクト変数に代入する
・Withステートメントのオブジェクトに指定する
・プロシージャー呼び出し時の実引数に指定する
等々の方法があります。
複数のオブジェクトが提供されているものもあります。
たとえばWordでは、アプリケーション(Application)オブジェクト、文書(Document)オブジェクト、等が提供されています。
ただし、このような変数を使用してオブジェクトを操作する場合は、実行時バインディングが行われます。
つまり、プログラムの実行時にバインディングが行われます。
これに対し、事前バインディングは、プログラムのコンパイル時にバインディングが行われます。
事前バインディングを行うオブジェクト変数を作成するには、特定のクラス IDを指定してオブジェクト変数を宣言します。
事前バインド変数を使用して参照するとパフォーマンスは向上する可能性がありますが、宣言で指定したクラスへの参照しか含めることができなくなります。
Dim ExcelSheet As Object
Set ExcelSheet = CreateObject("Excel.Sheet")
このVBAの実行で、変数ExcelSheetに入るのはWorkBookオブジェクトになります。
エクセルVBAで実行した場合は、新規にApplicationは作成されず、現在のApplicationにWorkBookが非表示で作成されるだけになります。
Excel以外のVBAでは使う事があるかもしれませんが、少なくともエクセルVBAで使う事はないでしょう。
CreateObject関数の使用例
Dim xlApp As Object
Set xlApp = CreateObject("excel.application")
xlApp.Visible = True
xlApp.Quit
Set xlApp = Nothing
・オブジェクトへの参照を格納する変数を宣言
・CreateObjectでExcelアプリケーションへの参照を作成
・アプリケーションを表示する為に、Visibleプロパティに真(True)を設定
・処理終了後、Quit メソッドでアプリケーションを終了
・オブジェクトの参照を解放
Dim wdDoc As Object
Set wdDoc = CreateObject("Word.Document")
With wdDoc.Application
.Visible = True
.Selection.TypeText Text:="abc"
End With
・オブジェクトへの参照を格納する変数を宣言
・CreateObjectでWordドキュメントへの参照を作成
・Wordドキュメントの親オブジェクトであるApplicationを指定
・アプリケーションを表示する為に、Visibleプロパティに真(True)を設定
・カーソル位置に"abc"を入れる
ここでは、サンプルとして、"Word.Application"ではなく"Word.Document"で作成している点に注意してください。
※上記VBAではWordは起動されたままになります。
GetObject関数
CreateObject関数は、ファイルパス(フルパスと名前)からオブジェクトの参照を作成したり、既に起動中のオブジェクトを取得する際に使用します。
Office VBA リファレンス CreateObject関数
同じテーマ「VBA関数」の記事
GetObject関数
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。