エクセルで写真をセルにぴったり収めたいと思っても、手動での調整は細かくて時間がかかるものです。
写真のサイズがセルからはみ出したり、逆に小さすぎて余白が生じたりと、思い通りにならない経験をお持ちの方も多いでしょう。
この記事では、エクセルで写真をセルに合わせる方法を中心に、枠にぴったり合わせるテクニック・サイズの統一・マクロによる自動化・レイアウト調整まで詳しく解説いたします。
手動調整の手間を大幅に削減できる実践的な方法を丁寧に解説しますので、ぜひ最後までご覧ください。
エクセルで写真をセルにぴったり合わせる基本と結論
それではまず、エクセルで写真をセルにぴったり合わせるための基本的なアプローチと、最も効率的な方法の結論について解説していきます。
写真をセルにぴったり合わせるためには、「写真のサイズをセルに合わせる」か「セルのサイズを写真に合わせる」かのどちらかのアプローチを選ぶことになります。
多数の写真を扱う場合はVBAマクロによる自動化が最も効率的であり、少数の写真であればAltキースナップと数値入力の組み合わせが手軽です。
エクセルで写真をセルにぴったり合わせる最も確実な方法は、VBAマクロで「写真の位置(Top・Left)と大きさ(Width・Height)にターゲットセルのそれぞれの値を代入する」という操作を自動化することです。この方法では1枚あたり数秒かかっていた調整作業が1クリックで完了するため、大量の写真を扱う業務で絶大な効果を発揮します。
Altキースナップを使ったセルへのぴったり配置
少数の写真をセルに合わせる場合は、AltキーをしながらドラッグするAltキースナップが最も手軽な方法です。
写真を選択してAltキーを押しながら移動・リサイズすると、写真の端がセルのグリッド線に自動的にスナップします。
写真の左上角をターゲットセルの左上角にスナップさせ、次に右下角を同じセルの右下角にスナップさせることで、セルにぴったりフィットした配置が実現します。
この操作に慣れれば1枚あたり30秒程度でセルへの合わせ込みができるようになるでしょう。
数値入力で正確にセルサイズに合わせる方法
セルの位置とサイズを把握した上で、写真の「位置とサイズ」を数値で直接入力する方法も確実です。
VBAのイミディエイトウィンドウで「?Cells(行,列).Top」「?Cells(行,列).Left」「?Cells(行,列).Width」「?Cells(行,列).Height」を実行すると、セルの位置とサイズをpt単位で取得できます。
取得した値を写真の「図の書式設定」の位置・サイズ欄に入力することで、数値上完全に一致したセルへの配置が可能です。
「セルに画像を挿入」機能で完全なセルフィットを実現(Excel2021以降)
Excel 2021・Microsoft 365では「挿入」→「画像」→「セルに配置」で、写真をセルのコンテンツとして直接埋め込めます。
この方法では写真がセルの値として扱われるため、セルのサイズ変更に完全連動し、フィルタやソート操作でも写真がずれることがありません。
従来の浮動画像とは根本的に異なるアプローチであり、最新バージョンを使用している場合は積極的に活用することをおすすめします。
VBAマクロで写真を自動的にセルに合わせる方法
続いては、VBAマクロを使って写真を自動的にセルサイズにフィットさせる具体的な実装方法を確認していきます。
マクロを使うことで、手動では数分かかる作業を数秒に短縮できます。
選択した写真を選択中のセルに自動フィットするマクロ
最も基本的なマクロとして、選択中の写真を選択中のセルにフィットさせるコードをご紹介します。
Sub FitPictureToActiveCell()
Dim shp As Shape
Dim cell As Range
Set cell = ActiveCell
For Each shp In Selection.ShapeRange
shp.LockAspectRatio = msoFalse
shp.Top = cell.Top
shp.Left = cell.Left
shp.Width = cell.Width
shp.Height = cell.Height
shp.Placement = xlMoveAndSize
Next shp
End Sub
使い方は、フィットさせたいセルをクリックしてアクティブにした後、写真を選択してこのマクロを実行するだけです。
写真の位置・サイズ・セル連動の設定が一度に完了するため、大量の写真調整作業を大幅に効率化できます。
特定範囲の写真を対応するセルに一括フィットするマクロ
複数の写真をそれぞれの対応セルに一括でフィットさせるマクロも非常に実用的です。
Sub FitAllPicturesToCells()
Dim shp As Shape
Dim cell As Range
Dim i As Integer
i = 1
Application.ScreenUpdating = False
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
Set cell = Cells(i * 3, 2)
shp.LockAspectRatio = msoFalse
shp.Top = cell.Top
shp.Left = cell.Left
shp.Width = cell.Width
shp.Height = cell.Height
shp.Placement = xlMoveAndSize
i = i + 1
End If
Next shp
Application.ScreenUpdating = True
End Sub
このマクロでは3行ごとのB列セルに写真を順番にフィットさせており、セルの間隔(i * 3の部分)は台帳のレイアウトに合わせて調整します。
ScreenUpdatingをFalseにすることで処理速度を向上させています。
縦横比を維持しながらセルに収めるマクロ
写真の縦横比を崩さずにセルの枠内に収めたい場合は、写真のアスペクト比とセルのアスペクト比を比較して、収まる方向にサイズを合わせる処理が必要です。
Sub FitKeepAspectRatio()
Dim shp As Shape
Dim cell As Range
Dim picRatio As Double
Dim cellRatio As Double
Set cell = ActiveCell
For Each shp In Selection.ShapeRange
picRatio = shp.Width / shp.Height
cellRatio = cell.Width / cell.Height
shp.LockAspectRatio = msoTrue
If picRatio > cellRatio Then
shp.Width = cell.Width
Else
shp.Height = cell.Height
End If
shp.Top = cell.Top + (cell.Height – shp.Height) / 2
shp.Left = cell.Left + (cell.Width – shp.Width) / 2
Next shp
End Sub
このマクロでは写真の縦横比とセルの縦横比を比較し、はみ出さない方向でサイズを決定した上で、セル内に中央揃えで配置します。
縦横比を維持したまま最大サイズでセルに収める最も理想的な配置が実現できます。
複数の写真サイズを統一してレイアウトを整える方法
続いては、複数の写真のサイズを統一してシート全体のレイアウトを整えるための方法を確認していきます。
写真サイズが統一されていると、資料全体の完成度が大幅に向上します。
セルの行高・列幅を統一する事前準備の方法
写真サイズを統一する前提として、写真を配置するセルの行高と列幅を統一しておくことが重要です。
行を複数選択して右クリック→「行の高さ」で数値を入力すると、選択した全行の高さが統一されます。
列も同様に「列の幅」で統一でき、写真エリアのセルを事前に均一なサイズに整えることで、後のマクロ処理が精度よく動作します。
ポイント(pt)で管理する場合は、VBAで「Rows(行番号).RowHeight = 数値」と設定する方が精度が高くなります。
整列機能で写真の位置を一気に揃える方法
サイズを統一した後は、写真の位置を整列機能で揃えます。
Ctrlキーで全写真を選択し、「図の形式」タブ→「配置」→「左揃え」「上揃え」などを組み合わせることで、すべての写真の基準位置を統一できます。
続いて「上下に等間隔で配置」または「左右に等間隔で配置」を適用することで、写真間の間隔も均等になります。
テンプレートに組み込んでレイアウトを固定する方法
セルサイズ・写真の配置基準・マクロをすべてテンプレートに組み込んで固定しておくことで、次回以降は写真を挿入してマクロを実行するだけの作業になります。
テンプレートをxltm形式(マクロ有効テンプレート)で保存し、新規作成時にテンプレートから開く運用を定着させることが、長期的な業務効率化の鍵です。
ボタンにマクロを割り当てておけば、VBAの知識がないスタッフでも同じ品質の写真台帳を作成できるようになります。
まとめ
この記事では、エクセルで写真をセルに合わせる方法について、枠にぴったり合わせるテクニック・サイズ統一・マクロ自動化・レイアウト調整まで幅広く解説いたしました。
AltキースナップやExcel 2021以降の「セルに配置」機能は手軽ですぐに使えるアプローチであり、大量処理にはVBAマクロが圧倒的に効率的です。
縦横比を維持しながらセルに収めるマクロは、写真の品質を損なわずに美しいレイアウトを実現する上で特に有用です。
テンプレートへのマクロ組み込みと運用定着によって、写真のセル合わせ作業を完全に効率化できるでしょう。
本記事の内容を参考に、ぜひ実務での写真レイアウト管理に役立てていただければ幸いです。