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

公開日:2017年5月15日

Objectsクラスは、ActiveX コントロール、またはワークシートにリンクなど、指定したExcelシート上にある、全てのOLE オブジェクトを総称するコレクションです。以下、ActiveXコントロールを例にして解説します。

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オブジェクトをクリックすると、数式ボックスに指定する文字列が表示される。
HeightOLEオブジェクトの高さを設定する。
LinkOLEオブジェクトをリンクする場合にはTrueを設定する。既定はFalse
DisplayAsIconアイコンや画像を使用する場合にはTrueを指定する。
IconFileNameDisplayAsIconでTrueを指定した場合には、ファイル名を指定する。指定しない場合には既定のアイコンを使用する。
IconIndexアイコンファイルに含まれるアイコンの番号を指定する。
IconLabelアイコンに表示するタイトルを指定する。
Leftワークシートの左上隅を基準としてポイントで指定する。
WidthOLEオブジェクトの横幅を指定する。
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
Excel VBA OLEObjects

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
Excel VBA OLEObjects

↓実行結果

Excel VBA OLEObjects

4.その他

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