Home » Access VBA » Access VBAを使ってExcelシートに図形を作成するには

Access VBAを使ってExcelシートに図形を作成するには

動作検証バージョン:Windows 11 Home + 64bit Access & Excel バージョン 2403(ビルド17425.20000クイック実行)ベータチャネル

「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への参照から記述しなければいけないことという違いはあるものの、ほとんど同じコードです。

[スポンサードリンク]

Home » Access VBA » Access VBAを使ってExcelシートに図形を作成するには

「Access VBA」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.