SkillStack Lab 運営者の「スタック」です。
仕事で報告書を作るとき、エクセルに写真を一枚ずつ貼り付けて、角を合わせてサイズを調整して…という作業に追われていませんか?
特に工事写真台帳のように大量の画像を扱う場合、手作業だと縦横比が崩れたり、結合セルの真ん中に綺麗に収まらなかったりと、意外と神経を使いますよね。
今回は、そんな面倒な作業を一括で終わらせるマクロについて、ファイル名順の処理や重くなる問題への対策も含めて解説していきます。

- 画像の縦横比を崩さずセルに合わせて自動調整する仕組み
- 結合セルの中央にピッタリ配置する計算ロジック
- フォルダ内の複数画像をファイル名順に一括処理する方法
- ファイルサイズ肥大化やエラー時の具体的な対処法
エクセルで写真を貼り付け自動サイズ調整するマクロの基本

まずは、VBAを使って画像を思い通りに制御するための基礎的な考え方から見ていきましょう。
ただ貼り付けるだけなら簡単ですが、「綺麗に」「枠に合わせて」配置するには、ちょっとした算数とコツが必要です。
ここでは、プロっぽい仕上がりにするために避けて通れない、いくつかの重要なロジックを深掘りします。
縦横比を維持してセルに合わせる
写真をセルに貼り付けるとき、一番やりがちなミスが「写真が縦長になったり横長になったりして歪んでしまう」ことですよね。
これは、セルの高さと幅に無理やり合わせようとするからです。
これを防ぐためには、アスペクト比(縦横比)の固定が重要になります。VBAでコードを書く際は、単純に「画像の高さ=セルの高さ」とするのではなく、以下の手順を踏む必要があります。
具体的には、「セルの枠内に収まる最大のサイズ」を計算で求めるわけですが、ここで少しだけ算数の話をしますね。
比率維持の計算ステップ
画像を歪ませないためには、以下の手順で計算します。
- セルの幅と高さ、画像の幅と高さを取得する。
- 「横幅に合わせた場合の縮小率(セル幅 ÷ 画像幅)」を計算する。
- 「高さに合わせた場合の縮小率(セル高さ ÷ 画像高さ)」を計算する。
- 2つの縮小率のうち、小さい方を採用する。

こうすることで、縦長の写真を横長のセルに入れたとしても、はみ出さずに余白を残して収めることができます。
「小さい方の縮小率」を選ぶのが、写真を切らずに全体を表示させる最大のポイントですね。これをコードに落とし込むことで、どんな形状の写真が来ても、自動的に最適なサイズが算出されるようになります。
結合セルに画像をピッタリ収める
実務で作る帳票や台帳って、セルを結合して大きな「写真貼り付け欄」を作ることが多いですよね。例えば、B2からE10までを結合して一つの枠にする、といった具合です。
でも、VBAで普通にセル(ActiveCell)を指定すると、結合された範囲全体ではなく、左上の1マス分しか認識してくれないことが多々あります。
ここで使うのが MergeArea というプロパティです。
MergeAreaとは?

選択しているセルが結合されている場合、その結合範囲全体をひとつの塊(Rangeオブジェクト)として扱ってくれる便利な命令です。
これを使えば、「B2セルからD10セルまで結合されている」といった場合でも、その大きな四角形の幅(Width)と高さ(Height)を正確に取得できます。
これを知らないと、「マクロを実行したら、写真が豆粒みたいなサイズで左上にちょこんと貼られただけだった…」なんて悲劇が起きてしまうので注意が必要ですね。
実務レベルのマクロでは、必ずと言っていいほどこの処理が入っています。
写真をセルの真ん中に配置する
サイズ調整ができたら、次は配置です。左上(Left, Top)をセルの左上に合わせるだけだと、余白が右と下に偏ってしまい、見た目が少し不格好になります。
報告書としての体裁を整えるなら、画像はセルの中心にあるべきですよね。
プロっぽい仕上がりにするには、センタリング(中央揃え)の計算を入れましょう。計算式は意外とシンプルです。
左位置(Left) = セルの左位置 + (セルの幅 – 画像の幅) ÷ 2
上位置(Top) = セルの上位置 + (セルの高さ – 画像の高さ) ÷ 2

この計算を上下左右で行うことで、どんなサイズの写真でも、セルのど真ん中にドンと配置されます。この「余白を2で割る」という処理を入れるだけで、報告書のクオリティがグッと上がりますよ。
また、厳密にはエクセルの画面表示倍率やディスプレイ解像度によって数ピクセルのズレが生じることがあるので、わずかにマージン(余白)を持たせて計算するのがコツです。
フォルダ内の複数を一括処理する

1枚貼るだけなら手作業でもいいですが、10枚、20枚となるとマクロの出番です。
指定したフォルダに入っている画像を、次々と読み込んで貼り付けていく処理を作ります。
一般的には Dir 関数や FileSystemObject を使って、フォルダ内のファイル一覧を取得します。「拡張子が .jpg のファイルだけを探す」といった条件指定も可能です。
ループ処理の注意点
画像を連続で貼り付けるときは、次に貼り付けるセルをどうやって決めるかが重要です。
「アクティブセルの下の行に移動する」のか、「特定の名前がついたセルに順番に入れる」のか、事前にルールを決めてコードを書く必要があります。
特に工事写真台帳のテンプレートなどは、「次の写真枠」が決まった位置にあることが多いので、Offset プロパティを使って「10行下のセルへ移動」といった制御をループの中に組み込むのが一般的です。
ファイル名順に並べて貼り付ける
フォルダ内の一括処理でよくあるトラブルが、「写真が順番通りに貼り付けられない」という問題です。
実は、パソコン内部でのファイル取得順序は、私たちがフォルダで見ている「名前順」とは限らないんです。
現場写真などで「001.jpg」「002.jpg」と番号を振っているのに、マクロを通すと「1.jpg」の次に「10.jpg」が来てしまい、バラバラになってしまうと困りますよね。
これを解決するには、一度ファイル名をすべて取得してから、配列などで並び替え(ソート)を行う処理を挟む必要があります。
少しコードは複雑になりますが、業務で使うなら必須の機能かなと思います。バブルソートなどのアルゴリズムを実装して、意図した順番通りに写真を並べる工夫が必要です。
💡 ネットのコードをコピペしても、自分のファイルに合わせて修正できず困っていませんか?
ブログのテキストや分厚い専門書でVBAのコードを解読するのは、実は非常にハードルが高く、9割の人が途中で挫折してしまいます。
確実に実務で使えるスキルを身につけるなら、文字を追うのではなく「プロの画面の動きを動画でそのまま真似する」のが一番の近道です。
元社内SEの視点で、小難しい理論は抜きにして、明日からの面倒な手作業を劇的にラクにする「超・実践的なUdemy神講座」だけを厳選しました。
※Udemyは頻繁に90%OFFセール(1,500円前後)を行っています。絶対に定価では買わず、まずはセールが開催されていないかチェックして、賢く自己投資を始めてみてください!
\ 動画を見てマネするだけで自動化 /
エクセルへの写真貼り付けと自動サイズ調整マクロの応用
基本的な仕組みがわかったところで、次はもう少し実践的な、現場レベルでの活用法やトラブルシューティングについてお話しします。
私が実際に相談を受けた内容なども踏まえて、より深く解説しますね。
工事写真台帳の作成を自動化する
「エクセル 写真 貼り付け 自動サイズ調整 マクロ」と検索される方の中で、最もニーズが高いのが建設業界の工事写真台帳ではないでしょうか。
A4縦の用紙に写真を3枚並べて、右側に説明書きを入れる…というフォーマットが一般的ですよね。
この場合、単に画像を貼るだけでなく、以下の機能も組み合わせると最強のツールになります。
- 画像のファイル名をそのまま「説明欄」に転記する
- 撮影日などのExif情報を読み取って記載する
- 改ページに合わせて、新しいページ(行)を自動で追加する
特に、写真の中に写っている「黒板(小黒板)」の文字が読めるサイズで貼り付けられているかは重要です。
ここまで自動化できれば、現場から帰ってきて数時間かかっていた事務作業が、ワンクリック数分で終わるようになります。これは本当に効果絶大です。
大量の画像で重くなるのを防ぐ
写真をたくさん貼り付けたエクセルファイル、メールで送れないほど重くなっていませんか?
最近のスマホやデジカメは高画質なので、そのまま貼り付けるとファイルサイズが爆発的に増えてしまいます。
ここで重要なのが「リンク貼り付け」と「埋め込み貼り付け」の違いです。
| 貼り付け方式 | メリット | デメリット |
|---|---|---|
| 埋め込み | ファイル単体で管理・配布できる | ファイルサイズが巨大になる |
| リンク | ファイルサイズが非常に軽い | 元画像を移動・削除すると表示されなくなる |
実務では、客先に提出することを考えると「埋め込み」が安全ですが、そのままだと重すぎます。
対策としては、VBAからエクセルの「図の圧縮」機能を呼び出すのが有効です。
Application.CommandBars.ExecuteMso "PicturesCompress" などのコマンドを使って、画質を少し落として容量を削減する処理をマクロの最後に追加しておきましょう。

マクロで貼り付けできない時の対処
「コードは合っているはずなのに、なぜか動かない…」という場合、いくつか原因が考えられます。
よくあるのがセキュリティ設定です。
会社のエクセルだと、マクロの実行がブロックされていることがあります。まずは「開発」タブからマクロのセキュリティ設定を確認してみましょう。
また、画像のパス(保存場所)に日本語が含まれているとエラーになるケースや、結合セルの指定が間違っていて「貼り付け先の幅が0」と判定され、エラーが出ることもあります。
動かないときは、まずは「F8キー」を押して、1行ずつコードを実行(ステップイン)してみるのが解決への近道です。
フリーソフトやアプリとの違い

最近は、スマホで撮るだけで台帳ができるアプリや、無料で使えるフリーソフトもたくさんありますよね。
「わざわざマクロを作る必要ある?」と思うかもしれません。それぞれの特徴を比較してみましょう。
| ツール | コスト | 自由度 | 特徴 |
|---|---|---|---|
| Excelマクロ | 無料 | 高 | 自社フォーマットに完全対応可能 |
| スマホアプリ | 有料が多い | 低 | 現場で完結するがフォーマット固定が多い |
| フリーソフト | 無料 | 中 | 操作は簡単だが、細かい微調整が難しい |
マクロのメリット
- 完全無料:エクセルさえあれば追加費用がかからない。
- カスタマイズ自由:自社の指定フォーマットに1ミリ単位で合わせられる。
- セキュリティ:外部サーバーにデータを上げなくて済む。
アプリは手軽ですが、月額費用がかかったり、フォーマットが決まっていたりします。
「いつものあの帳票」をそのまま使いたいなら、やはりエクセルマクロに軍配が上がるかなと思います。
💡 「エクセルでの業務効率化」に限界を感じていませんか?
マクロによる細かな作業の自動化は非常に便利ですが、OSのアップデート等で動かなくなるたびにコードを修正し、自作ツールの保守を自分ひとりで抱え続けるのは、実はかなりの時間と労力(コスト)がかかります。
「関数やマクロのエラーに怯える日々から抜け出したい」
「誰かが休むと業務が回らない『エクセル属人化』を根本から解消したい」
そう感じたことのある総務・経理・バックオフィス担当者に向けて、元社内SE・現役管理職の視点で「日々の定型業務を劇的に楽にする脱エクセル(SaaS)ツール」を厳選しました。
いきなり会社で稟議を通す必要はありません。時間を無駄にせず業務を効率化したい方は、まずはノーリスクの無料登録や資料請求を活用して、専用ツールの圧倒的な「ラクさ」をご自身の目で確かめてみてください。
\ エクセルの手作業を今日でやめるなら /
エクセルの写真貼り付け自動サイズ調整マクロで業務改善
今回は、エクセルに写真を自動でサイズ調整して貼り付けるマクロについて解説してきました。
縦横比の維持、センタリング、そして一括処理。これらを組み合わせることで、単純作業の時間を大幅に削減できます。
最初はコードを書くのが難しく感じるかもしれませんが、一度作ってしまえば、その後の作業はずっと楽になります。
「手作業での貼り付け」から卒業して、その時間を分析や現場の管理など、もっと重要な仕事に使っていきましょう!
もし「自分でコードを書くのはやっぱり不安…」という場合は、まずは簡単な「1枚貼り付け」から試してみて、少しずつ機能を足していくのがおすすめですよ。
より詳細な仕様については、マイクロソフトの公式ドキュメントなども参考にしてみてください。(出典:Microsoft Learn『Shapes.AddPicture メソッド (Excel)』)

