
ExcelVBA シートに画像を自動的に貼り付けることで、作業の効率化を図る。手動で画像を挿入する手間を省き、データと連携したレポート作成などに活用できる。 使い方や注意点など、サンプルコードをもとに具体的に解説します。
「VBAスキルを証明できれば、社内評価アップにつながるかもしれません
👉 VBAを学んで社内評価を上げる方法はこちら
目次
Excel VBA シートに画像を自動的に貼り付ける|シーン
以下のシーンで利用します。
1.レポートや資料に自動でロゴや図を挿入
2.商品リストやカタログに画像を一括で追加
3.条件に応じた画像を動的に変更する
Excel VBA シートに画像を自動的に貼り付ける|サンプルコード
「VBAスキルを証明できれば、社内評価アップにつながるかもしれません
👉 VBAを学んで社内評価を上げる方法はこちら
指定したセルの位置に画像を貼り付ける
標準モジュール
Option Explicit
Sub InsertImage()
Dim ws As Worksheet
Dim imgPath As String
Dim img As Shape
Dim targetCell As Range
' 画像を挿入するシートとセルを指定
Set ws = ThisWorkbook.Sheets("Sheet1") ' シート名を変更可
Set targetCell = ws.Range("B2") ' 貼り付けるセル
' 画像のフルパスを指定(適宜変更)
imgPath = "C:\Users\User\Pictures\スタンダード.png"
' 画像を貼り付け
Set img = ws.Shapes.AddPicture(imgPath, msoFalse, msoCTrue, _
targetCell.Left, targetCell.Top, -1, -1)
End Sub
・imgPath に貼り付ける画像のフルパスを指定
・targetCell.Left、targetCell.Top でセルの位置に配置
・-1, -1 を指定すると画像サイズは元のサイズのまま
画像のサイズを指定して貼り付ける
標準モジュール
Option Explicit
Sub InsertImageWithSize()
Dim ws As Worksheet
Dim imgPath As String
Dim img As Shape
Dim targetCell As Range
' 画像を挿入するシートとセルを指定
Set ws = ThisWorkbook.Sheets("Sheet1")
Set targetCell = ws.Range("B2")
' 画像のフルパス
imgPath = "C:\Users\User\Pictures\スタンダード.png"
' 画像を貼り付け(サイズ指定)
Set img = ws.Shapes.AddPicture(imgPath, msoFalse, msoCTrue, _
targetCell.Left, targetCell.Top, 100, 100)
End Sub
・100, 100 を指定すると 幅100px・高さ100px で画像を挿入
・サイズを固定したい場合に使用
画像を削除して新しい画像を貼り付ける(上書き)
標準モジュール
Option Explicit
Sub ReplaceImage()
Dim ws As Worksheet
Dim imgPath As String
Dim img As Shape
Dim shp As Shape
' シートを指定
Set ws = ThisWorkbook.Sheets("Sheet1")
' 既存の画像を削除
For Each shp In ws.Shapes
If shp.Type = msoPicture Then shp.Delete
Next shp
' 画像のフルパス
imgPath = "C:\Users\User\Pictures\スタンダード.png"
' 画像を貼り付け
Set img = ws.Shapes.AddPicture(imgPath, msoFalse, msoCTrue, 50, 50, -1, -1)
End Sub
・For Each shp In ws.Shapes で 既存の画像を削除
・新しい画像を 重複なく貼り付ける ことが可能
Excel VBA シートに画像を自動的に貼り付ける|注意点
1. 画像のパスはフルパスで指定する必要がある
相対パスを使用するとエラーが発生するため、フルパスで指定する
2. 画像のサイズは `-1, -1 で元サイズ、指定可能
サイズを変えたい場合は width, height を指定
3. 画像の位置をセルに合わせる場合は Left、Top を使用
セルの中央に配置する場合は targetCell.Left + (targetCell.Width / 2) など工夫が必要
4. 既存の画像を削除する場合は Shapes をループ処理する
画像が複数ある場合、不要な画像を削除するには shp.Delete を活用
Excel VBA シートに画像を自動的に貼り付ける|まとめ
Shapes.AddPicture で画像を貼り付け
Shapes をループして既存の画像を削除
Left, Top を指定してセルの位置に配置
「VBAスキルを証明できれば、社内評価アップにつながるかもしれません