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関数」の記事
Rnd関数
Round関数
Command関数
CreateObject関数
DoEvents関数
Environ関数
GetObject関数
IMEStatus関数
InputBox関数
MsgBox関数
Partition関数
新着記事NEW ・・・新着記事一覧を見る
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)
2段階の入力規則リスト作成:最新関数対応|エクセル関数応用(2025-12-24)
IFS関数をVBAで入力するとスピルに関係なく「@」が付く現象について|VBA技術解説(2025-12-23)
数値を記号の積み上げでグラフ化する(■は10、□は1)|エクセル練習問題(2025-12-09)
AI時代におけるVBAシステム開発に関する提言|生成AI活用研究(2025-12-08)
GrokでVBAを作成:条件付書式を退避回復するVBA|エクセル雑感(2025-12-06)
顧客ごとの時系列データから直前の履歴を取得する|エクセル雑感(2025-11-28)
ちょっと悩むVBA厳選問題|エクセル雑感(2025-11-28)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.条件分岐(Select Case)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.
