【EXCEL VBA】結合したセルの大きさに合わせて写真を挿入するコード

PC操作

このページで紹介する内容

 このページのコードを使うと、上の写真のように、エクセルの結合セルの大きさに合わせて写真をきれいに貼り付けることができます。
 挿入したいセルをダブルクリックすると、写真選択のウィンドウが自動的に開いてくれて、写真の縦横比を保ったまま、セルの大きさに自動的に合わせて、セルの中央に配置してくれます。
<メリット>
エクセルに、写真を張り付けて、大きさを調整する作業の負担を軽減してくれます。
<注意点>
エクセルの「開発」タブを有効化し、VBAのコードを貼り付ける作業が必要です。

エクセルデータのダウンロードリンク

とにかく使えれば良い!という方に向けて、筆者が作成したエクセルデータのダウンロードリンクをこちらでご紹介いたします。

コードの紹介

VBAの任意のシートに、以下のコードを貼り付ければ完了です。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim myF As Variant
Cancel = True

'================写真を貼り付けたい範囲の調整をここで行う。横23×縦19のセルを結合した場合はこのままです。
If Not Target.Columns.Count = 23 And Target.Rows.Count = 19 Then Exit Sub
'================上の23と19を好みのセルの結合した大きさに変えてください。

myF = Application.GetOpenFilename _
("jpg bmp tif png gif,*.jpg;*.bmp;*.tif;*.png;*.gif", , "画像の選択", , False)
If myF <> False Then
With ActiveSheet.Shapes.AddPicture(Filename:=myF, LinkToFile:=False, _
SaveWithDocument:=True, Left:=Target.Left, Top:=Target.Top, _
Width:=-1, Height:=-1)
'===============タテヨコの縮尺を保持して拡大または縮小
.LockAspectRatio = True '縦横比率の維持(念のため)
.Width = Target.Width
If .Height > Target.Height Then .Height = Target.Height

'===============中央へ調整
.Top = Target.Top + Target.Height / 2 - .Height / 2
.Left = Target.Left + Target.Width / 2 - .Width / 2

End With
End If
End Sub

結合セル以外でダブルクリックした時には反応しないようにしています。

正確には、結合セルの大きさを指定して、指定した結合セル以外ではダブルクリックしても反応しないようにコードを書いています。

下の画像のように、横23×縦19のセルを結合した部分をダブルクリックすると反応するようにコードを書いています。

Target.Columns.Count = 23 And Target.Rows.Count = 19 の23と19を好きな数字で書き換えれば、自分好みの写真整理シートができます。

写真をセルの大きさにぴったり合わせたい場合

写真の縦横比を変えて、結合したセルにぴったりと写真の大きさを合わせる場合は、次のコードを使用します。「ここから」「ここまで」と記載された部分が上のコードと違います。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim myF As Variant
Cancel = True

'================写真を貼り付けたい範囲の調整をここで行う。横23×縦19のセルを結合した場合はこのままです。
If Not Target.Columns.Count = 23 And Target.Rows.Count = 19 Then Exit Sub
'================上の23と19を好みのセルの結合した大きさに変えてください。

myF = Application.GetOpenFilename _
("jpg bmp tif png gif,*.jpg;*.bmp;*.tif;*.png;*.gif", , "画像の選択", , False)
If myF <> False Then
With ActiveSheet.Shapes.AddPicture(Filename:=myF, LinkToFile:=False, _
SaveWithDocument:=True, Left:=Target.Left, Top:=Target.Top, _
Width:=-1, Height:=-1)
'==================ここから===========================================
.LockAspectRatio = False '縦横比率を維持しない
.Width = Target.Width
.Height = Target.Height
'==================ここまで===========================================

'===============中央へ調整
.Top = Target.Top + Target.Height / 2 - .Height / 2
.Left = Target.Left + Target.Width / 2 - .Width / 2

End With
End If
End Sub

補足(VBAの入力の仕方)

VBAを書き込むまでの、エクセルの設定の仕方をご紹介します。

1.開発タブの有効化

エクセルを開いて「ホーム」→「オプション」をクリックします。

「リボンのユーザー設定」画面でメインタブの中の「開発」にチェックを入れます。これで、エクセル上部のタブに「開発」タブが追加されます。

2.コードを貼り付ける

「開発」タブをクリックします。

「Visual Basic」ボタンをクリックします。

VBAのウインドウの左側に表示されている、Sheet〇(シート名)からVBAを実行させたいシートをダブルクリックして選択すると、コード入力画面が出てきます。その後、下の写真のようにコードを貼り付けます。

まとめ

以上の操作で、エクセルで簡単に写真の大きさを調整してくれるVBAが使えるようになります。何かのお役に立てれば幸いです。

筆者おすすめ健康食品

筆者は毎日くるみ、松の実、クコの実、田七人参を食べてます。35過ぎた時点から、食事・運動・睡眠に気を付けないとすぐに体調と頭の回転が悪くなるため、いろいろ試しましたが、これらが一番飛車には効くようです!

 

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