Excel VBAリファレンス>>OLEObjectクラス【Office2013以降】
公開日:2017年5月14日
Objectクラスは、ActiveX コントロール、またはワークシートにリンクあるいは埋め込まれている OLE オブジェクトを表わすのに使用します。以下、ActiveXコントロールを例にして解説します。
OLEObjectクラス【Office2013以降】
目次
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
Private Sub OLEオブジェクトの取得()
'ActiveXコントロールを取得する
Dim MyOLE As Object
'インデックス番号を指定する方法
Set MyOLE = ThisWorkbook.Worksheets("Sheet1").OLEObjects(1)
'オブジェクト名を取得する。
MsgBox MyOLE.Name
End Sub
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
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
4.その他
このリファレンスはOffice2013以降で使用する場合の説明になります。
10冊まで同時に読み放題の電子書籍サービス(200万冊以上が対象)。
PC・ITカテゴリーの対象数は7,000以上。
スキル、ノウハウ吸収や話題作りにと、ライフ・クオリティを高めてくれます。
関連記事
書籍には載っていないことにも言及してコメント
WinActorの良いところ悪いところ、VBAとの比較など
予想以上に役立つ場面が多いプログラミング言語
様々な視点でVBAの難易度をコメント
初心者からVBAプログラマーになるまでの書籍を紹介
