「ACCESS VBA EXCEL 図形描画 msoShapeRoundedRectangle」
といった検索でアクセスがありました。
Access VBAから、Excelのシートに、図形msoShapeRoundedRectangleを作成・挿入するには、
どのようなコードを書けばいいのかを調べていらしたのでしょう。
Access VBAでExcelに図形を作成するサンプルプロシージャ
Excelが起動している状態で以下のSubプロシージャを実行してください。
Sub Excelシートに図形を挿入する()
On Error GoTo ErrHandl
Const msoShapeRoundedRectangle = 5
Dim xl_app As Object
Set xl_app = GetObject(Class:="Excel.Application")
xl_app.ActiveSheet.Shapes.AddShape _
Type:=msoShapeRoundedRectangle, _
Left:=25, _
Top:=25, _
Width:=75, _
Height:=75
Set xl_app = Nothing
Exit Sub
ErrHandl:
Select Case Err.Number
Case 429
MsgBox "Excelが起動していないようです。"
Case 91
MsgBox "Excelファイルが開かれていないようです。"
Case Else
MsgBox Err.Description & vbCrLf & Err.Number
End Select
Err.Clear
End Sub
正常に実行できると、Excelのアクティブシートに下図のような図形が作成されます。
サンプルプロシージャで行っている処理
上記のSubプロシージャで行っている処理は以下のとおりです。
定数msoShapeRoundedRectangleの定義
「ACCESS VBA EXCEL 図形描画 msoShapeRoundedRectangle」
とのことですから、最初に定数msoShapeRoundedRectangleに「5」を代入しています。
Const msoShapeRoundedRectangle = 5
Office Library(MSO.DLL)への参照設定が行われているのであれば、
この定数を準備するコードは不要です。
起動済Excel.Applicationへの参照取得
つづいて、VBAのGetObject関数を使って、
起動済みのExcel.Applicationオブジェクトへの参照を取得して、変数xl_appに代入しています。
Dim xl_app As Object Set xl_app = GetObject(Class:="Excel.Application")
この変数xl_appを経由して行う処理は、実質的にExcel VBAです。
msoShapeRoundedRectangleの作成
次の
xl_app.ActiveSheet.Shapes.AddShape _ Type:=msoShapeRoundedRectangle, _ Left:=25, _ Top:=25, _ Width:=75, _ Height:=75
が、図形msoShapeRoundedRectangleを作成しているコードです。
Excel.Shapes.AddShapeメソッドの、
引数Typeに定数msoShapeRoundedRectangleを指定し、位置を指定する引数LeftとTopに「25」を、大きさを指定する引数WidthとHeightに「75」を指定しています。
拙著『理解するExcel VBA/図形操作の基本』の、「5-3. AddShapeで図形を挿入する」で、アクティブシートに正方形を作成する以下のようなコードをご紹介しています。
ActiveSheet.Shapes.AddShape _
Type:=msoShapeRectangle, _
Left:=25, _
Top:=25, _
Width:=75, _
Height:=75
作成する図形の形状が異なること、Access VBAからであるためExcel.Applicationへの参照から記述しなければいけないことという違いはあるものの、ほとんど同じコードです。
- Newer:MergeCellsとMergeの違い
- Older:Word VBAでRange.Clearは??
Home » Access VBA » Access VBAを使ってExcelシートに図形を作成するには