Home » エクセルマクロ・Excel VBAの使い方 » Shapeオブジェクト » Excel VBAで画像を挿入する

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

「vba 画像挿入」
という検索キーワードでアクセスがありました。

このキーワードだけではどのアプリケーションについてかわかりませんが、アクティブなワークシートに画像を挿入するExcel VBAのサンプルをご紹介します。

[スポンサードリンク]

画像を挿入する基本のサンプル

Cドライブのtempフォルダーにsample.jpgが存在している状態で、以下のSubプロシージャを実行してください。

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

画像を挿入してサイズを変更するサンプル

画像を挿入してから、画像の縦横比を保持したまま、大きさを変更するなら、以下のようなコードです。

Sub アクティブシートに画像を挿入してサイズを変更する()
 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

最終更新日時:2021-03-09 16:29

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Shapeオブジェクト » Excel VBAで画像を挿入する

TrackBack:0

TrackBack URL

Home » エクセルマクロ・Excel VBAの使い方 » Shapeオブジェクト » Excel VBAで画像を挿入する

「Shapeオブジェクト」の記事一覧

検索


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

.