Excel VBAリファレンス>>OLEObjectクラス【Office2013以降】

公開日:2017年5月14日

Objectクラスは、ActiveX コントロール、またはワークシートにリンクあるいは埋め込まれている OLE オブジェクトを表わすのに使用します。以下、ActiveXコントロールを例にして解説します。

1.VBA上の位置付け

Excelのメンバー

2.主なメンバー

項目名前
イベントGotFocus
lostFocus
メソッドActivate
Copy
Cut
Delete
Select
プロパティApplication
Border
Height
Index
Left
LinkedCell
Locked
Name
Object
Top
Visible

3.使い方

3-1.OLEオブジェクトの取得

コントロール名を指定する方法とインデックス番号を指定して取得する方法があります。

Set 変数=(ブック.)シート.OLEObjects("オブジェクト名" or インデックス番号)

Private Sub OLEオブジェクトの取得()
'ActiveXコントロールを取得する

Dim MyOLE As Object

'コントロール名を指定する方法
Set MyOLE = ThisWorkbook.Worksheets("Sheet1").OLEObjects("btn1")
'インデックス番号をメッセージボックスに表示
MsgBox MyOLE.Index

End Sub
Excel VBA OLEObject
Private Sub OLEオブジェクトの取得()
'ActiveXコントロールを取得する

Dim MyOLE As Object

'インデックス番号を指定する方法
Set MyOLE = ThisWorkbook.Worksheets("Sheet1").OLEObjects(1)
'オブジェクト名を取得する。
MsgBox MyOLE.Name

End Sub
Excel VBA OLEObject

3-2.OLEオブジェクトから値を取得する

Objectプロパティを使用します。

変数 = OLEオブジェクト.Object.(値のプロパティ)

Private Sub OLEオブジェクトの値を取得()
'ActiveXコントロールの値を表示する。

Dim MyButton As Object
Dim MyTextBox As Object
Dim MyLabel As Object
Dim MyMsg As String

Set MyButton = ThisWorkbook.Worksheets("Sheet1").OLEObjects("btn1") 'トグルボタン
Set MyTextBox = ThisWorkbook.Worksheets("Sheet1").OLEObjects("txt1") 'テキストボックス
Set MyLabel = ThisWorkbook.Worksheets("Sheet1").OLEObjects("lbl1")   'ラベル

MyMsg = MyButton.Object.Caption & vbCrLf & MyTextBox.Object.Value & _
vbCrLf & MyLabel.Object.Caption

MsgBox MyMsg

End Sub
Excel VBA OLEObject

3-3.OLEオブジェクトの複製、移動

コピーにはCopyメソッドを使用します。

OLEオブジェクト.Copy

OLEオブジェクトの移動には、TOPプロパティとLeftプロパティを使用します。

OLEオブジェクト.Top = 数字: OLEオブジェクト.Left = 数字

Private Sub OLEオブジェクトの複製と移動()
'ラベルを複製して指定の位置に移動する。

Dim MyLabel As Object

Set MyLabel = ThisWorkbook.Worksheets("Sheet2").OLEObjects("lbl1")   'ラベル

'ラベルをコピーしてシート上に貼り付け
MyLabel.Copy
ActiveSheet.Paste

'コピーして作成したActiveXコントロールは名前が初期値(ラベルはLabel**)になる。
'TOPを100ポイント、Leftを120ポイントに指定して移動する。
With ActiveSheet.OLEObjects("Label1")
    .Object.Caption = "ラベルコピー"
    .Top = 100
    .Left = 120
End With

MsgBox "ラベルをコピーしました"

End Sub
Excel VBA OLEObject

4.その他

このリファレンスはOffice2013以降で使用する場合の説明になります。