
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ベーシック選択問題集をご用意しました。
・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ベーシック選択問題集をご用意しました。
・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ベーシック選択問題集をご用意しました。
・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で自動化するコードのベースが習得できる解説書」
Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。