エクセルに写真を貼り付けるたびに、手動でサイズを調整するのは非常に手間のかかる作業です。
特に写真台帳や点検記録など、大量の写真を扱う資料ではサイズ調整だけで多くの時間を費やしてしまいます。
この記事では、エクセルで写真の自動サイズ調整をする方法として、貼り付け時の自動調整・セルに合わせる設定・複数写真のサイズ統一・VBAマクロを使った自動化まで徹底的に解説いたします。
一度仕組みを作ってしまえば、以降の作業が劇的に効率化されますので、ぜひ最後までお読みください。
エクセルで写真を貼り付けた際のサイズ自動調整の基本
それではまず、エクセルで写真を貼り付けた際のサイズ自動調整の基本的な考え方と、実現できることの全体像について解説していきます。
残念ながらエクセルには「貼り付けた瞬間に自動でセルに合わせる」という標準機能は搭載されていません。
しかし、VBAマクロを使った自動化や、セルサイズを先に整えておくといった工夫によって、実質的な自動調整を実現することは十分に可能です。
エクセルの写真サイズ自動調整を実現する最も効果的な方法はVBAマクロの活用です。「貼り付けたら自動でセルサイズに合わせる」マクロをシートのWorksheet_Changeイベントに設定することで、挿入のたびに手動調整をする必要がなくなります。これにより大量の写真を扱う業務の作業時間を大幅に短縮できます。
貼り付け時に自動でサイズ調整されるVBAイベントの仕組み
VBAのWorksheet_SelectionChangeイベントやWorksheet_Changeイベントを使うことで、シートへの操作をトリガーにしてマクロを自動実行させることができます。
写真挿入を検知する専用のイベントはありませんが、ボタンを1クリックするだけで直前に挿入した写真を指定セルのサイズに合わせるマクロを設置する方法が実用的です。
フォームコントロールのボタンにマクロを割り当てることで、「写真挿入→ボタンクリック」という2ステップで自動調整が完了します。
写真を挿入する前にセルサイズを揃えておく準備
自動化の前提として、写真を配置するセルのサイズをあらかじめ統一しておくことが重要です。
例えば「写真の高さを4cm・幅を6cm」と決めたら、対応するセルの行高をポイント値(4cm≒113.4pt)、列幅を文字数換算で設定しておきます。
セルのサイズを先に固定しておくことで、写真のサイズ調整の基準が明確になり、自動化マクロの精度も上がります。
写真台帳テンプレートを作る際は、この下準備を最初に行うことを強くおすすめします。
Excel 2021・Microsoft365の「セルに画像を挿入」での自動調整
Excel 2021以降では「挿入」→「画像」→「セルに配置」を選ぶことで、写真がセルのコンテンツとして埋め込まれ、セルのサイズ変更に自動追従します。
この機能を使えば、セルをリサイズするだけで写真も自動的にサイズが変わるため、実質的な自動サイズ調整が実現します。
フィルタやソートにも対応しており、写真一覧の管理において最も優れた選択肢の一つでしょう。
VBAマクロを使った写真の自動サイズ調整の実装方法
続いては、VBAマクロを使って写真の自動サイズ調整を実装する具体的な方法を確認していきます。
マクロを使いこなすことで、手動では不可能な高度な自動化が実現できます。
選択中のセルに写真をフィットさせるマクロ
最も基本的なVBAマクロとして、選択したセルの大きさに最後に挿入した写真を自動フィットさせるコードをご紹介します。
Sub AutoFitPictureToSelectedCell()
Dim shp As Shape
Dim targetCell As Range
Set targetCell = Selection
Set shp = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
With shp
.LockAspectRatio = msoFalse
.Top = targetCell.Top
.Left = targetCell.Left
.Width = targetCell.Width
.Height = targetCell.Height
.Placement = xlMoveAndSize
End With
End Sub
このマクロは、写真を挿入した直後にセルを選択してマクロを実行することで、選択中のセルのサイズと位置に写真を自動フィットさせます。
「.Placement = xlMoveAndSize」でセルとの連動も同時に設定されるため、後から行・列サイズを変えても写真が追従します。
シート上のすべての写真を一括でサイズ統一するマクロ
すでに挿入済みの複数の写真を一括で同じサイズに統一するマクロも非常に実用的です。
Sub UnifyAllPictureSize()
Dim shp As Shape
Dim targetH As Double
Dim targetW As Double
targetH = 100 ‘目標の高さ(ポイント)
targetW = 150 ‘目標の幅(ポイント)
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.LockAspectRatio = msoFalse
shp.Height = targetH
shp.Width = targetW
End If
Next shp
End Sub
targetHとtargetWの値を変更することで、任意のサイズに一括統一できます。
縦横比を維持したい場合は「LockAspectRatio = msoTrue」に変更し、高さのみを指定するとよいでしょう。
フォルダの写真を自動挿入&サイズ調整する高度なマクロ
フォルダ内の写真を指定セルに順番に自動挿入し、同時にサイズ調整まで行う高度なマクロもご紹介します。
Sub InsertAndFitPictures()
Dim folderPath As String
Dim fileName As String
Dim rowIndex As Integer
Dim targetCell As Range
folderPath = “C:\photos\”
fileName = Dir(folderPath & “*.jpg”)
rowIndex = 2
Do While fileName <> “”
Set targetCell = Cells(rowIndex, 2)
Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddPicture(folderPath & fileName, False, True, targetCell.Left, targetCell.Top, targetCell.Width, targetCell.Height)
shp.Placement = xlMoveAndSize
fileName = Dir()
rowIndex = rowIndex + 1
Loop
End Sub
このマクロは指定フォルダのJPG画像を2行目のB列から順に挿入し、各セルのサイズにぴったりフィットさせます。
写真台帳の作成を完全自動化できるため、実務での時間短縮効果が非常に大きいマクロです。
写真のサイズを統一するための効率的な準備と設定
続いては、写真のサイズを統一するための事前準備や設定のポイントを確認していきます。
マクロだけに頼らず、シートの設計段階から統一を意識することが大切です。
行高・列幅をポイントとcmで統一設定する方法
写真のサイズをcmで決めたら、対応する行高・列幅を正確に設定します。
行高の単位はポイント(pt)で、1cm = 約28.35ptです。
列幅は「標準フォントの文字数」という特殊な単位ですが、VBAでは「ColumnWidth」プロパティで文字数、「Width」プロパティでptを指定できます。
VBAで行高・列幅をpt単位で直接設定することで、写真サイズと完全に一致させることができます。
テンプレートシートに自動調整マクロを組み込む方法
繰り返し使用する写真台帳や点検表は、自動調整マクロを組み込んだテンプレートファイルとして保存しておくのがおすすめです。
xltm形式(マクロ有効テンプレート)で保存することで、新しいファイルを作成するたびにマクロが利用可能な状態で始められます。
テンプレートにボタンやショートカットキーの割り当てまでしておけば、使い始めるたびの設定作業がなくなり業務効率が大幅に向上します。
写真サイズの統一基準を決めるポイント
写真のサイズを統一する際は、以下の基準を事前に決めておくとスムーズです。
| 用途 | 推奨サイズ(目安) | 備考 |
|---|---|---|
| 写真台帳(A4縦・2枚/頁) | 幅12cm × 高さ9cm | A4余白を考慮 |
| 写真台帳(A4横・3枚/頁) | 幅8cm × 高さ6cm | 横配置に最適 |
| 商品一覧表 | 幅3cm × 高さ3cm | 正方形が視認しやすい |
| 報告書の参考写真 | 幅6cm × 高さ4.5cm | 4:3比率が一般的 |
用途と印刷サイズに合わせた基準を決めてから作業を始めることで、後からの手直しを最小限に抑えられます。
写真の自動サイズ調整でよくある問題と解決法
続いては、写真の自動サイズ調整を行う際によくある問題とその解決方法を確認していきます。
実際の作業でつまずきやすいポイントを把握しておくことで、スムーズな業務進行が可能になります。
縦横比が崩れて写真が歪む問題への対処
セルのサイズと写真の縦横比が一致しない場合、強制フィットさせると写真が歪みます。
この問題を解消するには、セルのサイズを写真の縦横比に合わせて設定するか、写真を縦横比維持でフィットさせてセル内で中央揃えにする方法が有効です。
VBAでは「LockAspectRatio = msoTrue」を設定した上で高さだけを指定すれば、幅が自動計算されて縦横比が維持されます。
マクロ実行後に写真の位置がずれる問題
マクロで位置・サイズを設定した直後は正しく見えても、保存・再表示後にずれる場合があります。
原因として、ズームレベルの変化やページレイアウトビューとの切り替えによる表示差異が挙げられます。
「.Placement = xlMoveAndSize」設定を確実に含めておくことと、標準ビューでのみマクロを実行することで多くの場合は解消されます。
大量写真を処理する際のマクロの速度改善
数十枚以上の写真を一括処理するマクロでは、画面の更新が頻繁に発生してパフォーマンスが落ちることがあります。
マクロの先頭に「Application.ScreenUpdating = False」を追加し、処理終了後に「Application.ScreenUpdating = True」で元に戻すことで、画面更新を停止させて処理速度を大幅に改善できます。
100枚以上の写真を処理する場合でも、この設定を加えるだけで体感速度が数倍変わることがあります。
まとめ
この記事では、エクセルで写真の自動サイズ調整をする方法について、貼り付け時の対応・セルへのフィット・サイズ統一・VBAマクロ活用まで詳しく解説いたしました。
Excel 2021以降の「セルに画像を挿入」機能は最も手軽な自動調整方法であり、旧バージョンではVBAマクロで同様の効果を実現できます。
フォルダの写真を自動挿入&サイズ調整する高度なマクロを活用すれば、写真台帳作成の作業時間を劇的に短縮することが可能です。
テンプレートにマクロを組み込んで繰り返し使える仕組みを作ることで、継続的な業務効率化が実現できるでしょう。
ぜひ本記事を参考に、写真の自動サイズ調整の仕組みを構築してみてください。