VBA関数
CreateObject関数

Excelマクロで必須のVBA関数を入門・初級・初心者向けに詳細解説
最終更新日:2019-11-20

CreateObject関数


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


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のclass、

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は起動されたままになります。

※VBA関数一覧

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



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

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


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

import文(パッケージ・モジュールのインポート)|Python入門(9月24日)
例外処理(try文)とexception一覧|Python入門(9月23日)
リスト内包表記|Python入門(9月22日)
Pythonの引数は参照渡しだが・・・|Python入門(9月21日)
lambda(ラムダ式、無名関数)と三項演算子|Python入門(9月20日)
関数内関数(関数のネスト)とスコープ|Python入門(9月18日)
関数の定義(def文)と引数|Python入門(9月18日)
組み込み関数一覧|Python入門(9月17日)
辞書(dict型)|Python入門(9月16日)
入力規則への貼り付けを禁止する|VBA技術解説(9月16日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門




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


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



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