生成AIでエクセルのマクロを作ってみた その12024.10.14

生成AIでエクセルのマクロを作ってみた その1



  1. マクロを作成する
    1.開発タブを有効にする:
    「ファイル」タブをクリックし、「オプション」を選択します。
    「リボンのユーザー設定」を選択し、「開発」タブにチェックを入れて「OK」をクリックします。
    2.Visual Basic for Applications (VBA) エディタを開く:
    「開発」タブをクリックし、「Visual Basic」を選択します。
    「挿入」→「標準モジュール」を選択します。
    以下のコードをコピーして、モジュールに貼り付けます:

Sub InsertPictureInSelectedRange()
Dim ws As Worksheet
Dim pic As Picture
Dim picPath As String
Dim rng As Range
Dim fd As FileDialog
Dim imgWidth As Single, imgHeight As Single
Dim cellWidth As Single, cellHeight As Single
Dim aspectRatio As Single

' ファイルダイアログを表示して画像ファイルを選択
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
    .Title = "画像ファイルを選択してください"
    .Filters.Add "画像ファイル", "*.jpg; *.jpeg; *.png; *.bmp; *.gif", 1
    If .Show = -1 Then
        picPath = .SelectedItems(1)
    Else
        Exit Sub
    End If
End With

' 選択されたセル範囲を取得
Set rng = Selection
If rng Is Nothing Then Exit Sub

' ワークシートを指定
Set ws = ActiveSheet

' 画像を挿入
Set pic = ws.Pictures.Insert(picPath)

' 画像の元のサイズを取得
imgWidth = pic.Width
imgHeight = pic.Height
aspectRatio = imgWidth / imgHeight

' セル範囲のサイズを取得
cellWidth = rng.Width
cellHeight = rng.Height

' セル範囲に合わせて画像のサイズを調整
If cellWidth / cellHeight > aspectRatio Then
    pic.Width = cellHeight * aspectRatio
    pic.Height = cellHeight
Else
    pic.Width = cellWidth
    pic.Height = cellWidth / aspectRatio
End If

' 画像のサイズを98%に縮小
pic.Width = pic.Width * 0.998
pic.Height = pic.Height * 0.995

' 画像の位置をセル範囲に合わせる
With pic
    .Left = rng.Left + (cellWidth - pic.Width) / 2
    .Top = rng.Top + (cellHeight - pic.Height) / 2
End With

End Sub


  1. 右クリックメニューにマクロを追加する 1.同じモジュールに以下のコードを追加します:

Sub 画像貼り付け()
Dim cb As CommandBar
Dim cbc As CommandBarControl

' 右クリックメニューを取得
Set cb = Application.CommandBars("Cell")

' 既存のメニューを削除
On Error Resume Next
cb.Controls("画像貼り付け").Delete
On Error GoTo 0

' 新しいメニューを追加
Set cbc = cb.Controls.Add(Type:=msoControlButton, Before:=1)
With cbc
    .Caption = "画像貼り付け"
    .OnAction = "InsertPictureInSelectedRange"
End With

End Sub


  1. マクロを実行する
    1.「開発」タブの「マクロ」をクリックし、「画像貼り付け」を選択して実行します。
    これで、セルを右クリックすると「画像貼り付け」というメニューが表示され、選択するとファイルダイアログが 開き、任意のフォルダから画像を選択して、選択したセル範囲に貼り付けることができます。

Q1 エクセルで範囲指定したセルに合うように写真を貼り付けるマクロ

A1 エクセルで範囲指定したセルに画像をぴったり合わせるマクロを作成する方法を紹介します。以下のVBAコードを使用すると、選択したセル範囲に画像を自動的にフィットさせることができます。

× コード内の「Sheet1」や「A1:B2」、および画像のパス「C:\path\to\your\image.jpg」を適宜変更してください。

Q2 画像のパスを任意のフォルダから選べるようにしたい

A2 画像のパスを任意のフォルダから選択できるようにするためには、ファイルダイアログを使用する方法があります。以下のVBAコードを使用すると、ユーザーが任意のフォルダから画像を選択し、その画像を指定したセル範囲にフィットさせることができます。

× コード内の「Sheet1」や「A1:B2」を適宜変更してください。

Q3 シートやセル範囲を任意指定したい

A3 シートやセル範囲を任意に指定できるようにするためには、ユーザーにシート名とセル範囲を入力させる方法があります。以下のVBAコードを使用すると、ユーザーが指定したシートとセル範囲に画像を挿入し、フィットさせることができます。

× 「開発」タブの「マクロ」ボタンをクリックし、作成したマクロ「FitPictureToUserSpecifiedRange」を実行します。

Q4 右クリックでマクロを実行したい

A4 右クリックでマクロを実行する方法を紹介します。以下の手順に従って、右クリックメニューにマクロを追加し、実行できるように設定します。

× コード内の「Sheet1」を適宜変更してください。

Q5 アクティブシートに貼り付けたい

A5 アクティブシートに画像を貼り付けるためのVBAコードを紹介します。以下のコードを使用すると、ユーザーが選択した画像をアクティブシートの指定したセル範囲にフィットさせることができます。


(注) ダウンロードしたファイルにはマクロが入っているため、ダウンロード後、ファイルを右クリックし プロパティ セキュリティ 許可するにチェックを入れてください。


“生成AIでエクセルのマクロを作ってみた その1” への2件のフィードバック

  1. はっしゆたぐやさいのアバター
    はっしゆたぐやさい

    こんにちは
    写真の貼り付けが楽になりました、ただ写真の貼り付けがリンク貼り付けなので、出来れば直接貼り付けにならないでしょうか?
    後、いちいちマクロの実行をクリックしなくても良いようにはなりませんか?

  2. hoshigumiのアバター
    hoshigumi

    こんにちは。
    リンク貼り付けではなく、直接貼り付けですね。それと、マクロの自動実行ですか、生成AIに聞いてみますね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

T
O
P