「vba 画像挿入」
という検索キーワードでアクセスがありました。
このキーワードだけではどのアプリケーションについてかわかりませんが、アクティブなワークシートに画像を挿入するExcel VBAのサンプルをご紹介します。
画像を挿入する基本のサンプル
Cドライブのtempフォルダーにsample.jpgが存在している状態で、以下のSubプロシージャを実行してください。
ActiveSheet.Shapes.AddPicture _
Filename:="C:\temp\sample.jpg", _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=0, _
Top:=0, _
Width:=-1, _
Height:=-1
End Sub
アクティブシートの左上を基準に、C:\temp\sample.jpgが、元のサイズで挿入されます。
Shapes.AddPictureメソッドで画像挿入できる
Shapesコレクションに用意されているAddPictureメソッドを使えば、
画像の挿入ができます。
Excel VBAのShapes.AddPictureメソッドには、以下のような7つの引数を指定しなければなりません。
Filename:画像ファイル名
LinkToFile:画像ファイルとリンクした状態で挿入する否か
SaveWithDocument:画像をブックに埋め込んで挿入するか否か
Left:左端の位置
Top:上端の位置
Width:幅
Height:高さ
上記のSubプロシージャでは、画像ファイルとリンクしない状態で、ブックに埋め込む形で挿入しています。
LinkToFile:=msoFalse, _ SaveWithDocument:=msoTrue, _
左端と上端は、アクティブシートの左上を指定しています。
Left:=0, _ Top:=0, _
Widht・Heightに「-1」を指定することで、元の画像サイズのままで挿入しています。
Width:=-1, _ Height:=-1
画像を挿入してサイズを変更するサンプル
画像を挿入してから、画像の縦横比を保持したまま、大きさを変更するなら、以下のようなコードです。
Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddPicture( _
Filename:="C:\temp\sample.jpg", _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=0, _
Top:=0, _
Width:=-1, _
Height:=-1)
shp.LockAspectRatio = msoTrue
shp.Width = 300
End Sub
一旦、元のサイズのまま画像を挿入しておいて、あとからサイズを変更しています。
Shapes.AddPictureメソッドで、元のサイズのまま画像を挿入する部分は、基本的には同じですが、戻り値をオブジェクト変数shpに代入しているところが違います。
変数に代入するために、Shapes.AddPictureメソッドの引数をカッコで括っています。
Set shp = ActiveSheet.Shapes.AddPicture( _ Filename:="C:\temp\sample.jpg", _ LinkToFile:=msoFalse, _ SaveWithDocument:=msoTrue, _ Left:=0, _ Top:=0, _ Width:=-1, _ Height:=-1)
挿入したらサイズの変更です。
なくても大丈夫そうではありますが念のため、Shape.LockAspectRatioプロパティに、
msoTrueを指定することで、縦横比が変わらないようにしておいてから、
shp.LockAspectRatio = msoTrue
Shape.Widthプロパティを使って、
画像の横幅を300に指定しています。
shp.Width = 300
最終更新日時:2022-12-28 13:17
Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » Excel VBAで画像を挿入する-Shapes.AddPictureメソッド