Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » ActiveSheet.Pictures.Insert後にPicture.Placementを設定する

ActiveSheet.Pictures.Insert後にPicture.Placementを設定する

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2101 ビルド13628.20448 Microsoft Store)

マクロ記録機能で作られたコードを、改良しようとしている方でしょうか、
「vba Pictures.Insert セルに合わせて移動やサイズ変更する」
といった検索キーワードで、アクセスがありました。

Excelで画像挿入する操作をマクロ記録すると、

ActiveSheet.Pictures.Insert( _
  "画像ファイルのフルパス").Select

といったコードが作られます。このコードの改良方法を探していた方による検索でしょうか。

PicturesやPictureはレガシーなオブジェクトであり、Pictures.Insertメソッドで画像を挿入するとリンクオブジェクトとして挿入されてしまう不具合もあるため、私としては、Shapes.AddPictureメソッドを使うほうがイイとは思うのですが、参考になりそうなコードを一応ご紹介しておきます。

[スポンサードリンク]

Pictures.Insert後にPicture.Placementを設定するサンプルマクロ

Cドライブのtempフォルダーにsample.jpgを用意しておいて、以下のSubプロシージャを実行してください。

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型のオブジェクト変数に代入しておいてから、以下のコードです。

 shp.Placement = xlMoveAndSize

最終更新日時:2021-03-29 13:20

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » DrawingObjects » ActiveSheet.Pictures.Insert後にPicture.Placementを設定する

「DrawingObjects」の記事一覧

検索


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

.