Excel VBAリファレンス>>OLEObjectsクラス【Office2013以降】
公開日:2017年5月15日
Objectsクラスは、ActiveX コントロール、またはワークシートにリンクなど、指定したExcelシート上にある、全てのOLE オブジェクトを総称するコレクションです。以下、ActiveXコントロールを例にして解説します。
OLEObjectsクラス【Office2013以降】
目次
1.VBA上の位置付け
Excelのメンバー
2.主なメンバー
項目 | 名前 |
---|---|
メソッド | Add |
Copy | |
Cut | |
Delete | |
Select | |
プロパティ | Application |
Border | |
Count | |
Height | |
Interior | |
Left | |
Locked | |
PrintObject | |
Shadow | |
Top | |
Visible | |
Width |
3.使い方
3-1.OLEオブジェクトの追加
ワークシート上に新規のOLEオブジェクトを作成します。
(ブック.)シート.OLEObjects.Add 引数:=・・・
Addメソッドの引数は次の通りです(すべての引数は省略可能です)。
名前 | 説明 |
---|---|
ClassType | 追加するOLEオブジェクトの種類を指定する。例えば、ActiveXコントロールのコマンドボタンであれば、"Forms.CommandButton.1"と指定する。指定する文字列が分からない場合には、手動でOLEオブジェクトをExcelシート上に作成してみる。そのOLEオブジェクトをクリックすると、数式ボックスに指定する文字列が表示される。 |
Height | OLEオブジェクトの高さを設定する。 |
Link | OLEオブジェクトをリンクする場合にはTrueを設定する。既定はFalse |
DisplayAsIcon | アイコンや画像を使用する場合にはTrueを指定する。 |
IconFileName | DisplayAsIconでTrueを指定した場合には、ファイル名を指定する。指定しない場合には既定のアイコンを使用する。 |
IconIndex | アイコンファイルに含まれるアイコンの番号を指定する。 |
IconLabel | アイコンに表示するタイトルを指定する。 |
Left | ワークシートの左上隅を基準としてポイントで指定する。 |
Width | OLEオブジェクトの横幅を指定する。 |
Top | ワークシートの左上隅を基準してポイントで指定する。 |
Sub OLEオブジェクトの追加() 'テキストボックスの追加 ActiveSheet.OLEObjects.Add _ ClassType:="Forms.TextBox.1", _ Width:=130, _ Height:=25, _ Top:=50, _ Left:=75 '追加したテキストボックスに文字を入力 '文字の設定は、リファレンス「OLEObjectクラス」を参照(OLEObjectsクラスではないので注意)。 ActiveSheet.OLEObjects("TextBox1").Object.Value = "テキストボックス追加" End Sub

3-2.OLEオブジェクトの各種設定
各種のプロパティを使用します。3-1の通り、Addメソッドの引数を使用しても、OLEオブジェクトの横幅、高さ、位置などを設定することができますが、OLEObjectsクラスのWidth、Height、Top、Leftプロパティを使用しても設定が可能です。
さらにOLEオブジェクトの塗りつぶしや枠線、影付、表示などについても設定することができます。
複数のプロパティを使用するため、Withステートメントの利用をお勧めします。
(ブック.)シート.OLEObjects.プロパティ
OLEObjectsクラスはExcelシート上の「全て」のOLEオブジェクトに適用されます。例えば、Widthメソッドで横幅を120に設定した場合には、全てのOLEオブジェクトが120に設定されることになります。
特定のOLEオブジェクトのみに適用する場合には、For Each ~ Inステートメントを使用します。
Sub OLEオブジェクトの変更とOLEオブジェクト数の表示() 'btn1の設定を変更する。 'OLEオブジェクトの数を表示する。 Dim MyOLE As Object 'ワークシートSheet1上の全てのOLEオブジェクトに対して繰り返し実行する。 For Each MyOLE In ThisWorkbook.Worksheets("Sheet1").OLEObjects 'MyOLEの名前がbtn1の場合のみ変更する。 If MyOLE.Name = "btn1" Then With MyOLE .Width = 130 '横幅130 .Height = 25 '高さ25 .Top = 50 '上位置50 .Left = 75 '左位置75 .Shadow = True '影を付ける .PrintObject = False 'ボタンを印刷しない End With '追加したテキストボックスに文字を入力 '文字の設定は、リファレンス「OLEObjectクラス」を参照(OLEObjectsクラスではないので注意)。 MyOLE.Object.Caption = "変更後のボタン" End If Next 'ワークシートSheet1に存在するOLEオブジェクトの数を表示 MsgBox "OLEオブジェクトの数は" & _ ThisWorkbook.Worksheets("Sheet1").OLEObjects.Count & "です" End Sub

↓実行結果

4.その他
このリファレンスはOffice2013以降で使用する場合の説明になります。
10冊まで同時に読み放題の電子書籍サービス(200万冊以上が対象)。
PC・ITカテゴリーの対象数は7,000以上。
スキル、ノウハウ吸収や話題作りにと、ライフ・クオリティを高めてくれます。
関連記事

VBAは人気がある?人気がない?

実証データを基に解説

VBAの人気やRPAとの需要争奪戦もコメント

アイディア次第で可能性が広がる

初心者からVBAプログラマーになるまでの書籍を紹介