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

 

ExcelVBA  シートに画像を自動的に貼り付けることで、作業の効率化を図る。手動で画像を挿入する手間を省き、データと連携したレポート作成などに活用できる。 使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA シートに画像を自動的に貼り付ける|シーン

以下のシーンで利用します。

1.レポートや資料に自動でロゴや図を挿入

2.商品リストやカタログに画像を一括で追加

3.条件に応じた画像を動的に変更する

 

Excel 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

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

ポイント

・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

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

ポイント

・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

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

ポイント

・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 を指定してセルの位置に配置

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問