もう手作業には戻れない!VBA Imageコントロールで画像表示を自動化するコード

【業務効率化】VBA
スポンサーリンク

【はじめに】その「画像コピペ作業」、いつまで続けますか?

「あぁ、また商品画像を1枚ずつリサイズして貼り付けるのか……。50枚もあるよ。これだけで午前中が終わっちゃうな……。もっと、こう、ポチッと押したらパッと画像が変わる方法、ないのかな?」

こんなふうに思ったことはありませんか?

実はこれ、Excel VBAの「Image(イメージ)コントロール」という機能を使えば、そんな悩みは今日で終わりです。

今回は、プログラミングが苦手な方でも「コピペ」で簡単に実装できる、画像の自動表示テクニックをご紹介します。

【業務効率化】VBAの記事を見る 

Imageコントロールとは?

「Imageコントロール」と聞くと少し難しく感じるかもしれませんが、要は「Excelの中に置くデジタルフォトフレーム」のようなものだとイメージしてみてください。

通常の画像貼り付けは、シールを直接ノートに貼る作業に似ています。一度貼ってしまうと、位置やサイズを調整するのが大変になります。

一方、Imageコントロールはフォトフレームの役割を果たすため、「中身のカード(画像データ)を差し替えるだけ」で作業が完了します。枠の大きさが固定されるため、レイアウトが崩れる心配もありません。

Step1:フォトフレーム(Imageコントロール)を設置しよう

まずは、画像を映し出す「枠」を作りましょう。

  1. Excelの「開発」タブをクリックします。(出ていない人は、リボンの右クリックから「リボンのユーザー設定」でチェックを入れてください)
  2. 「挿入」→「ActiveX コントロール」の中にある、山のようなマークの「イメージ」を選択します。
  3. シート上の好きな場所でドラッグして、枠を作ります。

これで準備完了です!

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の記事を見る 


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でしたが、年間100万円以上節約していました。
株式投資で年間360万円以上投資し、iDeCoも併用しています。
総資産はアッパーマス層に到達しました。
資格は日商簿記3級を持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、生産性を高めるITスキルについて発信しています。

生活を豊かにするため、高配当株投資で年間配当金60万円をめざしています。
現在の年間配当金は30万円ほどです。

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました