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以降で使用する場合の説明になります。

Amazon Kindle Unlimited

10冊まで同時に読み放題の電子書籍サービス(10万タイトル以上)。

PC・ITカテゴリーの対象数は4,000以上。

スキル、ノウハウ吸収や話題作りにと、ライフ・クオリティを高めてくれます。

関連記事

Topへ戻る