
ExcelVBA シートに画像を自動的に貼り付けることで、作業の効率化を図る。手動で画像を挿入する手間を省き、データと連携したレポート作成などに活用できる。 使い方や注意点など、サンプルコードをもとに具体的に解説します。
2025年の目標は繰り返し作業に悩まされない年にしませんか? Excel VBAを活用した効率化がその第一歩
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事
目次
Excel VBA シートに画像を自動的に貼り付ける|シーン
以下のシーンで利用します。
1.レポートや資料に自動でロゴや図を挿入
2.商品リストやカタログに画像を一括で追加
3.条件に応じた画像を動的に変更する
Excel VBA シートに画像を自動的に貼り付ける|サンプルコード
Excel VBAで効率化の準備をしてみませんか?2025年をよりスムーズに過ごすための資格
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事
指定したセルの位置に画像を貼り付ける
標準モジュール
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 を指定してセルの位置に配置
Excel VBAで自動化するコードのベースを習得したい方におすすめ!
VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。
ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。
ExcelVBAエキスパートスタンダード
ExcelVBAの開発を仕事にする人が対象の問題集です。
Excel VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。