Excelのマクロで画像を挿入する際、従来のPictures.InsertからShapes.AddPictureに変更することで、より柔軟な画像操作が可能になります。この記事では、既存のマクロをShapes.AddPictureに置き換える手順と注意点を解説します。
Shapes.AddPictureの基本構文
Shapes.AddPictureは以下の構文で使用します。
Set shp = ActiveSheet.Shapes.AddPicture(Filename:=”画像パス”, _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoCTrue, _
Left:=100, Top:=100, Width:=200, Height:=150)
パラメータの意味は次の通りです:
Filename:画像ファイルのフルパス
LinkToFile:Trueでリンク、Falseで埋め込み
SaveWithDocument:Trueでファイルに保存
Left, Top:画像の位置
Width, Height:画像のサイズ
既存マクロの置き換え例
元のコード。
Set PIC = ActiveSheet.Pictures.Insert(Filenames(i))
置き換え後。
Set PIC = ActiveSheet.Shapes.AddPicture(Filename:=Filenames(i), LinkToFile:=msoFalse, SaveWithDocument:=msoCTrue, Left:=ActiveCell.Left + 2.5, Top:=ActiveCell.Top + 1.3, Width:=-1, Height:=-1)
WidthとHeightを-1にすると元の画像サイズが保持されます。必要に応じてセルサイズに合わせて調整可能です。
ShapeRangeによるプロパティ設定
Shapes.AddPictureで挿入した後も、ShapeRangeを使って縦横比やサイズを設定できます。
With PIC.ShapeRange
.LockAspectRatio = msoTrue
.Height = ActiveCell.MergeArea.Height – 2
End With
これにより、セルの高さに合わせて縦横比を維持したサイズ調整が可能です。
注意点
Shapes.AddPictureはPictures.Insertと異なり、戻り値の型がShapeオブジェクトになります。そのため、Picture型ではなくShape型として扱う必要があります。また、PrintObjectプロパティはShapeオブジェクトでは使用できないため、印刷設定は別途調整してください。
まとめ
既存の画像挿入マクロをShapes.AddPictureに変更することで、画像の位置やサイズを自由に操作でき、セルサイズに合わせた調整も簡単になります。Picture型からShape型への変更点を理解しておくことで、従来のマクロをスムーズに移行可能です。


コメント