Excel VBAでPictures.InsertからShapes.AddPictureへの置き換え方法

Excel

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型への変更点を理解しておくことで、従来のマクロをスムーズに移行可能です。

コメント

タイトルとURLをコピーしました