Excel

【VBA】マクロ で図形貼り付けを位置指定(エクセル:座標を指定して挿入:オートシェイプ:オブジェクト:AddShape/AddPicture/Copy/Paste)でする方法

当サイトでは記事内に広告を含みます

この記事ではVBA(マクロ)で図形貼り付けを位置指定して行う方法について解説していきます。

VBAを始めとしたプログラミングにおいて初心者の段階では、
自分自身で考えてコードを作るよりも、完成したコードを見て・覚えて・慣れることで
効率的に習得できると私は感じています。

そのため、本記事の内容を参考にし、あなたのスキルアップに役立ててくださいませ。

また、VBAマクロで図形貼り付けを位置指定する基本構文を解説後に、そのままコピペで使える実践的なコードも紹介していますので、併せてご活用ください♪

VBAマクロで図形を位置指定で挿入、コピペする際の基本構文

それではまず、VBAマクロで図形を位置指定で挿入、コピペする際の基本構文について解説していきます。

VBAマクロを使用すると、図形やオートシェイプ、画像などのオブジェクトを、指定したセルの位置に簡単に挿入することができます。基本的な構文は以下の通りです。


' 新しい図形を挿入する場合
ActiveSheet.Shapes.AddShape(msoShapeType, Left, Top, Width, Height).Select

' 既存の図形をコピペする場合  
ActiveSheet.Shapes("図形名").Copy
ActiveSheet.Paste Destination:=Range("貼り付け先セル")

新しい図形を挿入する際は、AddShapeメソッドを使用します。第一引数(かっこの中身の1番目)には図形の種類を指定し、第二引数以降で左上の座標とサイズを指定します。

既存の図形をコピペする際は、Copyメソッドでコピーし、Pasteメソッドで貼り付けます。Destination引数で貼り付け先のセルを指定できます。

 

VBAマクロで図形を位置指定で作成する方法【オートシェイプで丸をD4セルに挿入】

続いては、VBAマクロで図形を位置指定で作成する方法について解説していきます。

ここでは例として、オートシェイプの丸をD4セルの位置に挿入してみましょう。


Sub シェイプ挿入()
    
    ' 変数を定義
    Dim shp As Shape
    
    ' 丸を描画
    Set shp = ActiveSheet.Shapes.AddShape(msoShapeOval, _
              Range("D4").Left, Range("D4").Top, 100, 100)
              
    ' 色とサイズを設定  
    With shp
        .Fill.ForeColor.RGB = RGB(255, 255, 0)
        .Line.ForeColor.RGB = RGB(0, 112, 192)
    End With
    
End Sub

上のコードの詳細を解説します。

1. Dimステートメントを使って、Shapeオブジェクトの変数shpを定義します。

2. AddShapeメソッドで丸(msoShapeOval)を描画します。座標はD4セルの左上位置を基準に、幅と高さを100ポイントずつ指定しています。

3. Withステートメントを使ってプロパティをまとめて設定。塗りつぶしと線の色をRGB値で指定しています。

VBAマクロPC内の画像を位置指定で挿入する方法【C://tool//gazou.pngをF8セルに挿入:AddPicture】

続いては、VBAマクロでPC内の画像ファイルを位置指定で挿入する方法について解説します。

Sub 画像挿入()

    ' 変数を定義
    Dim pic As Shape
    
    ' 画像を挿入
    Set pic = ActiveSheet.Shapes.AddPicture( _
              Filename:="C:\tool\gazou.png", _
              LinkToFile:=msoFalse, _
              SaveWithDocument:=msoTrue, _
              Left:=Range("F8").Left, _
              Top:=Range("F8").Top, _
              Width:=-1, _
              Height:=-1)

End Sub  

上のコードの詳細を解説します。

1. Dimステートメントで、Shapeオブジェクトの変数picを定義します。

2. AddPictureメソッドで画像ファイルを挿入します。
Filename引数で画像ファイルのフルパスを指定
LinkToFile`msoFalseで埋め込み画像に
SaveWithDocumentはmsoTrueで文書に保存
LeftとTopでF8セルの左上位置を基準に
WidthとHeightは-1でオリジナルサイズのまま

 

VBAマクロで図形のコピー貼り付けを位置指定で行う方法【D4セルの図形をD7にコピペ:Copy, Paste】

最後に、VBAマクロを使って既存の図形をコピーし、別のセルの位置に貼り付ける方法を見ていきましょう。

ここでは、先ほどD4セルに作成した丸を、D7セルの位置にコピペしてみます。

Sub シェイプコピペ()

    ' D4セルの図形をコピー
    ActiveSheet.Shapes("楕円 1").Copy
    
    ' D7セルに貼り付け
    ActiveSheet.Paste Destination:=Range("D7")

End Sub

上のコードの詳細を解説します。

1. Copyメソッドで楕円 1という名前の図形をコピーします。※図形名は挿入時の名称に応じて変更してください。

2. Pasteメソッドで、Destination引数にD7セルを指定して貼り付けます。

 

まとめ マクロで図形や画像挿入を位置指定(座標を指定して挿入:オートシェイプ:オブジェクト:AddShape/AddPicture/Copy/Paste)でする方法

以上で、VBAマクロを使った図形の位置指定挿入とコピペの方法についての解説は終了です。

本記事の内容が、あなたのExcelスキルアップの一助となれば幸いです。