エクセルファイルに埋め込まれた写真を個別の画像ファイルとして取り出したいというニーズは、実務の中でよく発生します。
受け取ったエクセルの報告書から写真だけを抜き出したい、古いファイルから写真データを復元したいという場面で、適切な方法を知っていると大変助かります。
この記事では、エクセルで写真を取り出す方法を中心に、抽出・保存・データ復元・画像ファイル化・バックアップまで、状況に応じた複数の方法を詳しく解説いたします。
いざというときに役立つ知識として、ぜひ最後まで読んでおいてください。
エクセルから写真を取り出す主な方法と使い分け
それではまず、エクセルファイルから写真を取り出すための主な方法と、状況に応じた使い分けについて解説していきます。
写真の取り出し方法は「1枚ずつ保存する方法」「ZIP展開で一括抽出する方法」「VBAマクロで自動化する方法」の3種類が主流です。
取り出す写真の枚数や目的に応じて最適な方法を選ぶことが、作業効率を大きく左右します。
エクセルから写真を取り出す最もシンプルな方法は「右クリック→図として保存」ですが、多数の写真を一括で取り出したい場合はxlsxファイルをZIP形式に変換して展開する方法が最も効率的です。このZIP展開の方法では、xl/mediaフォルダ内にすべての埋め込み画像がそのまま格納されており、数十枚・数百枚でも一度に取り出せます。
「図として保存」で1枚ずつ写真を取り出す方法
最も手軽な方法は、写真を右クリックして「図として保存」を選択する方法です。
保存ダイアログでファイル名・保存先・形式(PNG・JPEG・GIF・BMP・TIFF等)を指定してOKをクリックするだけで、写真が独立した画像ファイルとして保存されます。
この方法ではトリミングや色補正など、エクセル上で加えた編集が反映された状態で保存される点が特徴です。
編集前の元の写真を取り出したい場合は後述のZIP展開の方法を使いましょう。
ZIP展開で全写真を一括取り出しする方法
xlsx形式のエクセルファイルは内部的にZIPアーカイブ形式で構成されており、拡張子を変更して展開することでファイル内の画像を直接取り出せます。
手順は「エクセルファイルを閉じる」→「ファイルのコピーを作成する」→「コピーの拡張子を.xlsxから.zipに変更する」→「展開ソフトで解凍する」→「xl/mediaフォルダを開く」の順です。
xl/mediaフォルダにはファイルに埋め込まれたすべての画像が元のファイル名や連番で格納されており、一度に全写真を取り出すことができます。
この方法で取り出した画像はエクセル上での編集前の元データであるため、元の写真品質をそのまま保持しています。
方法別の特徴比較表
各取り出し方法の特徴を整理すると、以下の通りになります。
| 方法 | 対応枚数 | 編集状態 | 難易度 |
|---|---|---|---|
| 右クリック→図として保存 | 1枚ずつ | 編集後の状態で保存 | 簡単 |
| ZIP展開で一括抽出 | 全枚数一括 | 元データをそのまま取出 | 中程度 |
| VBAマクロで自動書き出し | 全枚数一括 | カスタマイズ可能 | やや高い |
VBAマクロを使ってエクセルから写真を一括書き出す方法
続いては、VBAマクロを使ってシート上の写真を指定フォルダに一括書き出す方法を確認していきます。
マクロを活用することで、柔軟な条件設定と高い再現性を持つ写真取り出しが実現できます。
シート上の全写真をPNGで書き出すマクロ
シート上のすべての写真を指定フォルダにPNG形式で書き出すVBAマクロをご紹介します。
Sub ExportPicturesToFolder()
Dim shp As Shape
Dim chtObj As ChartObject
Dim cht As Chart
Dim outputPath As String
Dim i As Integer
outputPath = “C:\exported_images\”
i = 1
Application.ScreenUpdating = False
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
shp.Copy
Set chtObj = ActiveSheet.ChartObjects.Add(0, 0, shp.Width, shp.Height)
Set cht = chtObj.Chart
cht.Paste
cht.Export outputPath & “image_” & i & “.png”, “PNG”
chtObj.Delete
i = i + 1
End If
Next shp
Application.ScreenUpdating = True
MsgBox i – 1 & “枚の画像を書き出しました。”
End Sub
このマクロでは写真を一時的なグラフオブジェクトにコピーしてPNG形式で書き出す手法を使っています。
outputPathの値を変更することで保存先フォルダを指定でき、完了時に書き出し枚数をメッセージで確認できます。
写真をファイル名付きで管理しながら書き出すマクロ
写真に対応するセルのテキスト(名前や管理番号)をファイル名として書き出すマクロを作成することも可能です。
Sub ExportWithCellName()
Dim shp As Shape
Dim chtObj As ChartObject
Dim cht As Chart
Dim outputPath As String
Dim cellName As String
Dim i As Integer
outputPath = “C:\exported_images\”
i = 1
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Then
cellName = Cells(i, 1).Value
If cellName = “” Then cellName = “image_” & i
shp.Copy
Set chtObj = ActiveSheet.ChartObjects.Add(0, 0, shp.Width, shp.Height)
Set cht = chtObj.Chart
cht.Paste
cht.Export outputPath & cellName & “.png”, “PNG”
chtObj.Delete
i = i + 1
End If
Next shp
End Sub
このマクロでは対応する行のA列の値をファイル名として書き出すため、写真管理台帳から整理されたファイル名での一括書き出しが実現できます。
書き出した写真を自動でフォルダ分けする方法
大量の写真を書き出す際に、カテゴリや日付ごとにサブフォルダを作成して整理するマクロを作成することも可能です。
VBAの「MkDir」関数でサブフォルダを自動生成し、条件に応じて書き出し先を振り分けることで、書き出しと同時に整理されたフォルダ構成が完成します。
写真の枚数が多い業務では、このような自動フォルダ分けの仕組みがファイル管理の効率化に大きく貢献します。
エクセルの写真データのバックアップと復元方法
続いては、エクセルに埋め込まれた写真データのバックアップと、万が一の際の復元方法を確認していきます。
写真データの消失を防ぐための予防措置と、トラブル時の対応策を把握しておくことが重要です。
定期的な写真データのバックアップ方法
エクセルファイルをOneDriveやSharePointに保存することで、自動バージョン管理機能によって過去のバージョンへの復元が可能になります。
OneDriveでは「バージョン履歴」から過去30日分程度の保存履歴を参照・復元できるため、誤って写真を削除してしまった場合でも対応できます。
ローカル保存の場合は、重要なファイルは定期的に外付けHDDやクラウドストレージにコピーしてバックアップを取る習慣をつけることをおすすめします。
破損したエクセルファイルから写真を復元する方法
エクセルファイルが破損して開けなくなった場合でも、ZIP展開の方法を使えば画像データだけを救出できる場合があります。
ファイルの拡張子を.zipに変更して展開を試み、xl/mediaフォルダにアクセスできれば写真データをそのまま取り出すことが可能です。
ファイルが完全に展開できない場合でも、7-ZipなどのアーカイブソフトではZIP内の特定ファイルだけを抽出する機能があるため試してみる価値があります。
写真を外部フォルダで管理してエクセルとリンクするバックアップ戦略
大量の写真を管理する場合は、写真ファイルは外部フォルダで管理し、エクセルにはリンクまたはHYPERLINK関数でパスを記録する戦略が長期的なバックアップ管理に有効です。
この方法では写真ファイルとエクセルファイルが分離されているため、それぞれを独立してバックアップでき、片方が破損してももう片方は無事に保持されます。
写真枚数が数百枚を超えるような大規模プロジェクトでは、埋め込みよりもリンク管理の方が運用コストを大幅に下げられるでしょう。
まとめ
この記事では、エクセルで写真を取り出す方法について、右クリック保存・ZIP展開・VBAマクロ・バックアップと復元まで幅広く解説いたしました。
少枚数であれば「図として保存」、多枚数であればZIP展開やVBAマクロを使う方法が最も効率的です。
ZIP展開による一括抽出の方法はエクセルの内部構造を利用したテクニックであり、知っておくだけで多くの場面で役に立つ知識です。
OneDriveのバージョン管理やリンク管理の戦略を組み合わせることで、大量の写真データを安全かつ効率的に管理できる体制が整います。
本記事の内容を参考に、エクセルの写真データ管理スキルをさらに高めていただければ幸いです。