マクロ記録機能で作られたコードを、改良しようとしている方でしょうか、
「vba Pictures.Insert セルに合わせて移動やサイズ変更する」
といった検索キーワードで、アクセスがありました。
Excelで画像挿入する操作をマクロ記録すると、
ActiveSheet.Pictures.Insert( _
"画像ファイルのフルパス").Select
といったコードが作られます。このコードの改良方法を探していた方による検索でしょうか。
PicturesやPictureはレガシーなオブジェクトであり、Pictures.Insertメソッドで画像を挿入するとリンクオブジェクトとして挿入されてしまう不具合もあるため、私としては、Shapes.AddPictureメソッドを使うほうがイイとは思うのですが、参考になりそうなコードを一応ご紹介しておきます。
Pictures.Insert後にPicture.Placementを設定するサンプルマクロ
Cドライブのtempフォルダーにsample.jpgを用意しておいて、以下のSubプロシージャを実行してください。
Dim pic As Picture
Set pic = ActiveSheet.Pictures.Insert("C:\temp\sample.jpg")
pic.Placement = xlMoveAndSize
End Sub
C:\temp\sample.jpgが挿入され、「セルに合わせて移動やサイズ変更する」オプションが設定されます。
Picture.PlacementにもShape.Placementと同じ定数を指定できる
オブジェクトブラウザーで[非表示のメンバーを表示]オプションを選べば表示される、PicturesコレクションのInsertメソッドは、詳細ペインに「As Picture」と表示されているとおり、挿入した画像を表すPictureオブジェクトを返します。
そんなPictureオブジェクトに用意されているPlacementプロパティの戻り値は「As Variant」と定義されていますが、
ShapeオブジェクトのPlacementプロパティと同様に、
XlPlacement列挙型に定義されている定数を設定できます。
上記のSubプロシージャでは、Picture.Placementプロパティに、定数xlMoveAndSizeを指定することで、セルに合わせて移動やサイズ変更する設定を行っています。
Shapes.AddPicture後にShape.Placementを設定する場合
レガシーなPicturesコレクション・Pictureオブジェクトではなく、Shapes.AddPictureメソッドを使って、セルに合わせて移動やサイズ変更する設定を行うのなら、戻り値をShape型のオブジェクト変数に代入しておいてから、以下のコードです。
最終更新日時:2021-03-29 13:20
Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » ActiveSheet.Pictures.Insert後にPicture.Placementを設定する