VBA関数
CreateObject関数

Excelマクロで必須のVBA関数を入門・初級・初心者向けに詳細解説
公開日:2013年5月以前 最終更新日:2021-08-14

CreateObject関数


CreateObject関数は、ActiveX オブジェクトへの参照を作成して返します。
CreateObject関数を使う事で、参照設定することなくActiveX オブジェクトを使用できるようになります。


つまり、VBAで外部ライブラリを使用する場合にCreateObject関数を使用します。

CreateObject関数の構文

CreateObject(class,[servername])

class
必ず指定します。
内部処理形式が文字型 (String) のバリアント型 (Variant) の値を指定します。
作成するオブジェクトのクラスとアプリケーションの名前を指定します。
指定文字列の大文字小文字は問いません。
servername
省略可能です。
内部処理形式が文字型 (String) のバリアント型 (Variant) の値を指定します。
作成するオブジェクトを保存するネットワーク サーバの名前を指定します。
ローカル マシンで使用する場合は、空の文字列 ("") を指定します。

引数 class は、appname.objecttype の形式で指定します。
appname
必ず指定します。
内部処理形式が文字型 (String) のバリアント型 (Variant) の値を指定します。
オブジェクトを提供しているアプリケーションの名前を指定します。
objecttype
必ず指定します。
内部処理形式が文字型 (String) のバリアント型 (Variant) の値を指定します。
作成するオブジェクトの種類またはクラスを指定します。

戻り値
作成されたオブジェクトの参照が返されます。
オブジェクトを作成できなかった場合はエラーを返します。

CreateObjectの解説

CreateObject関数で作成したオブジェクトを利用するには、以下のような方法があります。
・CreateObject関数の戻り値をSetステートメントでオブジェクト変数に代入する
・Withステートメントのオブジェクトに指定する
・プロシージャー呼び出し時の実引数に指定する
等々の方法があります。

オートメーションに対応しているアプリケーションでは、少なくとも 1 種類のオブジェクトが提供されています。
複数のオブジェクトが提供されているものもあります。
たとえばWordでは、アプリケーション(Application)オブジェクト、文書(Document)オブジェクト、等が提供されています。

As Object または、As Variantを使用してオブジェクト変数を宣言すると、任意の種類のオブジェクトへの参照を格納できる変数を作成できます。
ただし、このような変数を使用してオブジェクトを操作する場合は、実行時バインディングが行われます。
つまり、プログラムの実行時にバインディングが行われます。
これに対し、事前バインディングは、プログラムのコンパイル時にバインディングが行われます。
事前バインディングを行うオブジェクト変数を作成するには、特定のクラス IDを指定してオブジェクト変数を宣言します。
事前バインド変数を使用して参照するとパフォーマンスは向上する可能性がありますが、宣言で指定したクラスへの参照しか含めることができなくなります。

「Office VBA リファレンス」のCreateObject関数のサンプルVBAについて
Dim ExcelSheet As Object
Set ExcelSheet = CreateObject("Excel.Sheet")

このVBAの実行で、変数ExcelSheetに入るのはWorkBookオブジェクトになります。
エクセルVBAで実行した場合は、新規にApplicationは作成されず、現在のApplicationにWorkBookが非表示で作成されるだけになります。
Excel以外のVBAでは使う事があるかもしれませんが、少なくともエクセルVBAで使う事はないでしょう。

CreateObject関数の使用例

エクセルVBAで良く使うオブジェクトは以下を参照してください。
参照設定、CreateObject、オブジェクト式の一覧
VBAでエクセル外のオブジェクトを使うときには、事前バインディングと遅延バインディング(実行時バインディング)の2通りがあります、この時それぞれ何を指定したらよいのか、指定する文字列が長いので結構探してしまうことが度々あります。そこで、自身の覚え書きとしての意味も含めて、参照設定、CreateObjectのclas…

Excelの新規イスタンスを作成
Dim xlApp As Object
Set xlApp = CreateObject("excel.application")
xlApp.Visible = True
xlApp.Quit
Set xlApp = Nothing

・オブジェクトへの参照を格納する変数を宣言
・CreateObjectでExcelアプリケーションへの参照を作成
・アプリケーションを表示する為に、Visibleプロパティに真(True)を設定
・処理終了後、Quit メソッドでアプリケーションを終了
・オブジェクトの参照を解放

Wordドキュメントを新規作成
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関数と似たものにGetObject関数があります。
CreateObject関数は、ファイルパス(フルパスと名前)からオブジェクトの参照を作成したり、既に起動中のオブジェクトを取得する際に使用します。
GetObject関数
ActiveXコンポーネントから提供されたオブジェクトの参照を返します。ファイルパス(フルパスと名前)からオブジェクトの参照を作成したり、既に起動中のオブジェクトを取得する際に使用します。GetObject関数の構文 GetObject([pathname],[class]) pathname 省略可能。


Office VBA リファレンス CreateObject関数


※VBA関数一覧
マクロVBA関数の一覧と解説です、どんな関数があるかは一度は確認しておくとをお勧めいたします。どんな関数があるだけでも知っておけば、詳細の使い方は実際に使うときに調べても良いでしょう。文字列操作…34 分岐…3 型変換…14 データ判定…10 日付時刻…20 配列…6 ファイル操作…14 数学/財務…28 その他……



同じテーマ「VBA関数」の記事

Oct関数
Rnd関数
Round関数
InputBox関数
MsgBox関数
Environ関数
RGB関数
DoEvents関数
CreateObject関数
GetObject関数
Shell関数


新着記事NEW ・・・新着記事一覧を見る

ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ