ExcelVBA シートに画像を手動貼り付けから自動化で作業効率化を図る方法

 

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スキルを証明できれば、社内評価アップにつながるかもしれません