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プログラマーになるまでの書籍を紹介
