エクセルの写真貼り付けをセルに合わせる方法!ズレない一括自動調整術
エクセルの写真貼り付けをセルに合わせる方法!ズレない一括自動調整術のやり方について詳しく紹介します。分かりやすいガイドをご覧ください。
建設現場の施工管理写真や不動産の物件写真台帳など、数十枚から数百枚の写真を定型フォーマットに貼り付ける業務では、手作業での吸着操作は現実的ではありません。こうした現場で圧倒的な威力を発揮するのが、写真一括貼り付け自動サイズ調整を行うVBAマクロの導入です。
実務でマクロを組む際、最も重要なのは「画像の縦横比(アスペクト比)を維持したまま、指定したセル枠の内側に最大化して中央配置する」という計算ロジックです。単純にセルのWidthとHeightを画像に代入すると、被写体が横伸びしたり縦長に潰れたりして証拠能力や視認性が損なわれます。
実務で即座に応用できる基本ロジックは以下の構造を持っています。
Sub FitPicturesToCells() Dim shp As Shape Dim targetCell As Range Dim cellRatio As Double, imgRatio As Double For Each shp In ActiveSheet.Shapes If shp.Type = msoPicture Then ' 写真の左上位置があるセル(結合セル対応)を取得 Set targetCell = shp.TopLeftCell.MergeArea shp.LockAspectRatio = msoTrue cellRatio = targetCell.Width / targetCell.Height imgRatio = shp.Width / shp.Height ' セルと画像の比率を比較してリサイズ If imgRatio > cellRatio Then shp.Width = targetCell.Width - 4 ' 余白を2pt確保 Else shp.Height = targetCell.Height - 4 End If ' セルの中央へ配置 shp.Left = targetCell.Left + (targetCell.Width - shp.Width) / 2 shp.Top = targetCell.Top + (targetCell.Height - shp.Height) / 2 ' プロパティを「セルに合わせて移動やサイズ変更をする」に設定 shp.Placement = xlMoveAndSize End If Next shp End Sub
特にセル結合写真貼り付けを行う現場では、VBA内で対象セルを参照する際に shp.TopLeftCell.MergeArea を用いることが必須条件となります。単一の TopLeftCell のみを取得してしまうと、結合された全体の幅・高さを認識できず、結合エリアの左上1マス分だけに極小サイズで縮小されてしまうというトラブルが頻発するためです。