【はじめに】その「画像コピペ作業」、いつまで続けますか?
「あぁ、また商品画像を1枚ずつリサイズして貼り付けるのか……。50枚もあるよ。これだけで午前中が終わっちゃうな……。もっと、こう、ポチッと押したらパッと画像が変わる方法、ないのかな?」
こんなふうに思ったことはありませんか?
実はこれ、Excel VBAの「Image(イメージ)コントロール」という機能を使えば、そんな悩みは今日で終わりです。
今回は、プログラミングが苦手な方でも「コピペ」で簡単に実装できる、画像の自動表示テクニックをご紹介します。
Imageコントロールとは?
「Imageコントロール」と聞くと少し難しく感じるかもしれませんが、要は「Excelの中に置くデジタルフォトフレーム」のようなものだとイメージしてみてください。
通常の画像貼り付けは、シールを直接ノートに貼る作業に似ています。一度貼ってしまうと、位置やサイズを調整するのが大変になります。
一方、Imageコントロールはフォトフレームの役割を果たすため、「中身のカード(画像データ)を差し替えるだけ」で作業が完了します。枠の大きさが固定されるため、レイアウトが崩れる心配もありません。
Step1:フォトフレーム(Imageコントロール)を設置しよう
まずは、画像を映し出す「枠」を作りましょう。
- Excelの「開発」タブをクリックします。(出ていない人は、リボンの右クリックから「リボンのユーザー設定」でチェックを入れてください)
- 「挿入」→「ActiveX コントロール」の中にある、山のようなマークの「イメージ」を選択します。
- シート上の好きな場所でドラッグして、枠を作ります。
これで準備完了です!
Step2:画像を自動で読み込むVBAコードを作成しよう
次に、この枠に画像を呼び出すプログラムを書きます。
今回は、「ボタンを押したら、指定したフォルダにある画像を表示する」というシンプルな仕組みを作ってみましょう。pngとjpgに対応しています。
以下のコードを、VBE(Alt + F11で開く画面)の標準モジュールに貼り付けてください。
Sub ShowMyPicture_PNG()
' --- 変数の定義 ---
Dim imgPath As String
Dim myImage As Object
Dim wiaImg As Object
' 1. 画像のパスを指定
imgPath = "C:\Users\Desktop\sample_photo.png"
' 2. ファイルの存在確認
If Dir(imgPath) = "" Then
MsgBox "指定された画像ファイルが見つかりません: " & imgPath, vbExclamation
Exit Sub
End If
' 3. ActiveXコントロールの取得
Set myImage = ActiveSheet.Image1
' 4. WIAオブジェクトを使用して画像を読み込み
On Error GoTo ErrorHandler
Set wiaImg = CreateObject("WIA.ImageFile")
wiaImg.LoadFile imgPath
' WIAで読み込んだ画像をStdPicture型に変換してImageコントロールにセット
Set myImage.Picture = wiaImg.FileData.Picture
' 5. 画像のサイズ調整(比率維持)
myImage.PictureSizeMode = 3
MsgBox "画像の表示が完了しました!", vbInformation
Exit Sub
ErrorHandler:
MsgBox "画像の読み込みに失敗しました。" & vbCrLf & Err.Description, vbCritical
End Sub
ここがポイント!失敗を防ぐための重要テクニック
プログラミングを始めたばかりの頃によく直面するのが、「画像サイズがバラバラで枠からはみ出してしまう」という問題です。
上記のコードにあるmyImage.PictureSizeMode = 3という1行。これが実は重要です。これを設定しておくだけで、どんな大きな写真でも、フォトフレームの中に綺麗に収まってくれます。
手動で「右クリック→サイズ調整」を繰り返していたあの時間は、一体何だったんでしょうね……。今後はぜひImageコントロールを活用していきましょう!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント