エクセルVBAで使うコードの備忘録。VBAでワークシートに指定した画像ファイルを挿入するコード。画像の位置やサイズ、リンクとして挿入するかなどの設定について。
AddPictureメソッド
ワークシートに画像を挿入するには、「Worksheet」オブジェクト下の「Shapes」オブジェクトの「AddPicture」メソッドを使用します。「AddPicture」メソッドの引数は挿入したい画像ファイルのパスをはじめとした以下のようなものになります。引数はすべて必須です。
AddPictureメソッド
変数名 | 説明 |
FileName | 挿入したい画像ファイルのパス。 |
LinkToFile | 画像ファイルのリンクを挿入するかどうか。 リンクにするとサイズが軽くなるが、 画像ファイルが移動されたりすると表示されなくなる。 msoTrue: リンクのみ、msoFalse:リンクでない |
SaveWithDocument | ファイル保存時に画像を一緒に保存するかどうか。 リンクとして挿入している場合はMsoFalseを選択。 msoTrue: 画像を保存、msoFalse: 画像を保存しない |
Left | 画像の挿入位置。 ワークシート左端からの位置をポイント単位で指定。 |
Top | 画像の挿入位置。 ワークシート上端からの位置をポイント単位で指定。 |
Width | 画像の幅をポイント単位で指定。 元のサイズを保持する場合は-1を指定。 |
Height | 画像の高さをポイント単位で指定。 元のサイズを保持する場合は-1を指定。 |
サンプルコード
下記のサンプルコードでは画像ファイルをもとのサイズのままリンクとして読み込んで表示するようにしています。変数「shpObj」は挿入された画像を表すオブジェクトなので、後々この画像を操作したくなった際にはこのオブジェクトにアクセスしてやればよいです。
ちなみに下記のサンプルでは画像挿入位置の指定については特に触れていませんが、全体位置を指定するよりもセルの位置を指定する方が何かと便利であったりします。セルの位置を取得する方法についてはこちらの最後の方で触れています。
なお、コードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。
Public Sub AddPictureSample()
'--- 読み込む画像ファイルのパス ---'
Dim pictPath As String
pictPath = "[ファイルパス]"
'--- 読込先のワークシート ---'
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("[シート名]")
'--- 画像の挿入位置 ---'
Dim posLeft As Long
Dim posTop As Long
posLeft = 0
posTop = 0
'--- 画像の挿入 ---'
Dim shpObj As Object
Set shpObj = ws.Shapes.AddPicture( _
Filename:=pictPath, _
LinkToFile:=msoTrue, _
SaveWithDocument:=msoFalse, _
Left:=posLeft, _
Top:=posTop, _
Width:=-1, _
Height:=-1 _
)
End Sub