【エクセルVBAマクロ】写真挿入ボタンの作り方【特定の画像・フォルダを開く】

スポンサードリンク
VBA
過去の自分
過去の自分

エクセルシートの左上にロゴ画像を入れることになった…。
毎回画像を挿入するのはめんどうだから、マクロでササっとできない?

今の自分
今の自分

なるほど…。
では今回は、「エクセルに写真画像を挿入するボタンの作り方」
VBAマクロ歴3年の私が、できるだけわかりやすく解説いたします。

スポンサードリンク

エクセルに写真を挿入するボタンの作り方【VBAマクロ】

手順は以下のとおりです。

  • マクロの作成
  • ボタンの作成・マクロの登録

ではまずマクロを作成しましょう。

マクロの作成

マクロのVBAコードをお見せします。
解説は後ほど行います。

全コード

Sub 特定の写真を挿入()
    Dim ws As Worksheet
    Dim imgPath As String
    
    Set ws = ActiveSheet
    
    imgPath = "C:\Utatane\utatane.jpg"
    
    Set img = ws.Pictures.Insert(imgPath)
End Sub

実行見本

実行見本

解説

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

プロシージャの作成
Sub 特定の写真を挿入()

End Sub

プロシージャなどマクロ作成の基礎は下記記事にて解説しております。

変数の宣言
    Dim ws As Worksheet
    Dim imgPath As String

上記コードにて、以降使用する変数の宣言をしています。
変数や宣言については、下記記事をご参考ください。

挿入するシートを選択
    Set ws = ActiveSheet

上記コードにて、画像を挿入するシートを選択しております。
今回はアクティブシート(ActiveSheet)を選択しておりますが、特定のシートに挿入させたい場合は、下記の通り変更してください。

    Set ws = ThisWorkbook.Sheets("Sheet1") 'Sheet1を選択
写真(画像)ファイルを指定
    imgPath = "C:\Utatane\utatane.jpg"

上記コードにて、挿入する画像ファイルを指定しています。
右辺にファイルパス(フォルダパス\ファイル名)を指定してください。
今回は、「Cドライブ」の「Utatane」というフォルダ内にある「utatane.jpg」というファイルを指定しています。

写真(画像)の挿入
    Set img = ws.Pictures.Insert(imgPath)

上記コードにて、(コード6行目で指定した)画像を挿入しています。

これでマクロは完成です。
マクロが作成できたら、次はボタンの作成に移りましょう。

ボタンの作成・マクロの登録

ではボタンを作成しましょう。
手順は以下のとおりです。

  • エクセル画面に移行する
  • 「開発」→「挿入」から「フォームコントロールボタン」を選択
  • 設置したいセル周辺をクリック
  • 「マクロの登録」画面で作成したマクロを選択

詳しくは下記記事で解説しております。ご参考ください。

ボタンの作成とマクロの登録ができたら、ボタンを押して正常に実行されるか確認してみましょう。

さて、「毎回同じ画像ではなく、違う画像を挿入したい」ということもあるかと思います。
そんなときのために、「ボタンを押したら画像を選択するためのフォルダが開く」というマクロがあったら便利ですよね?
次項でコードを紹介いたします。

スポンサードリンク

画像を挿入するためにフォルダを開くマクロ

Sub 画像挿入フォルダを開く()
    Dim ws As Worksheet
    Dim pic As Picture
    Dim filePath As String

    Set ws = ActiveSheet

    filePath = Application.GetOpenFilename("画像ファイル,*.jpg;*.png;*.bmp")
    If filePath = "False" Then Exit Sub

    Set pic = ws.Pictures.Insert(filePath)
End Sub
フォルダを開くマクロ

8~11行目をピックアップして解説いたします。

    filePath = Application.GetOpenFilename("画像ファイル,*.jpg;*.png;*.bmp")
    If filePath = "False" Then Exit Sub

    Set pic = ws.Pictures.Insert(filePath)
  • 8行目:画像挿入フォルダを開く(エクセルの「挿入→画像」と同じ)
  • 9行目:画像挿入をキャンセルした場合、マクロを終了
  • 11行目:選択された画像を挿入

8行目で開くフォルダですが、前回開いたフォルダが選択されます。

開かれるフォルダ

最初はドキュメントやピクチャが選択されていますので、任意のフォルダに移動し、挿入したい画像を選択してください。

スポンサードリンク

うまく動作しないときの対処法

エラーが発生する

コンパイルエラー・実行時エラー

コードに問題がある場合が多いです。
「”」や()など、2つセットの記号が片方だけになっていないかなど、コードを再確認しましょう。
セル名を「”」で囲っていない場合でもエラーが発生します。

警告表示

マクロが無効になっている表示

上記の表示が出た場合は、マクロが無効になっています。
エクセルに表示された「コンテンツの有効化」をクリックするか、下記記事を参考にセキュリティ設定を変更してください。

スポンサードリンク

最後に

VBAマクロを使って、写真(画像)を挿入するボタンの作り方を解説いたしました。

当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

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