Amazon10/19まで!プライム感謝祭開催中!セール会場へ

Excelの画像を一括保存する方法|埋め込み画像の取り出しと形式の確認

Excelの画像を一括保存する方法

Excelに貼った画像は、1枚なら右クリックの[図として保存]で保存できます。

まとめて保存したいときは、.xlsxのファイルをZIPとして展開し、中に入っている画像ファイルを取り出します。

この記事のPowerShellのコマンドは、2026年10月18日に、Windows 11のWindows PowerShell 5.1で、PNGとJPEGの画像を4枚入れたテスト用のブックに対して実行して結果を確かめました。

テスト用のブックは、この機にExcelが入っていないため、Pythonのライブラリ(openpyxl 3.1.5)で作ったものです。

Excelで保存したブックや、Excelの[図として保存]の画面では確かめておらず、その部分はMicrosoft公式のサポート記事の記載をもとに書いています。

目次

方法の選び方

方法向いている場面注意点
図として保存保存したい画像が数枚だけ1枚ずつの操作になる。保存する形式を選べる
ZIPとして展開する画像が多い、シートが多いブックに保存されている状態の画像が出てくる。元のファイル名は分からない
Excelの画像を保存する方法

1枚ずつ保存する(図として保存)

Microsoftのサポート記事「画像やその他のグラフィックを別ファイルとして保存する」によると、Windows版のExcelでは次の手順で画像を別のファイルとして保存できます。

  1. 保存したい画像を右クリックし、[図として保存]を選ぶ
  2. [ファイルの種類]で保存する形式を選ぶ
  3. [ファイル名]に名前を入れるか、表示された名前のままにする
  4. 保存先のフォルダーを選び、[保存]を選ぶ

同じ記事では、この手順は写真のほか、図形・グラフ・SmartArt・デジタルインク・テキストボックスにも使えるとされています。

選べる形式は、次のとおりです。

形式公式の説明(要約)
PNG画像の一部を透明にできる
JPEG写真など色の多い画像に向く
GIF256色まで
TIFF保存を繰り返しても画質が落ちない形式
ビットマップ(Device-Independent ビットマップ)ほかのソフトでも同じように表示される
Windows メタファイル・拡張 Windows メタファイルベクター形式
SVG拡大しても画質が落ちない。Microsoft 365ではバージョン1909以降が必要
図として保存で選べる形式

Macでは、Controlキーを押しながら画像をクリックして[図として保存]を選ぶと書かれています。

まとめて取り出す(ZIPとして展開する)

Microsoftのサポート記事「Open XML 形式とファイル名拡張子」によると、.xlsxなどの今のOfficeのファイル形式は、ZIPの圧縮の技術を使って保存されています。

Microsoft Learnの「SpreadsheetML ドキュメントの構造」でも、ブックの拡張子を.xlsxから.zipに変えると、中の構成を見られると説明されています。

そのため、ブックをZIPとして展開すると、中に保存されている画像のファイルを取り出せます。

始める前に

  • 元のブックは直接いじらず、コピーを使う
  • ブックを閉じてから作業する
  • 対象は.xlsxや.xlsmの形式(古い.xlsの形式はZIPではない)

PowerShellで取り出す

PowerShellの Expand-Archive で.xlsxをそのまま展開しようとすると、次のエラーになりました。

.xlsx はサポートされるアーカイブ ファイル形式ではありません。サポートされるアーカイブ ファイル形式は、.zip のみです。

そこで、ブックを拡張子.zipの名前で一時フォルダーにコピーしてから展開します。

1行目と2行目のパスを、自分のブックと、展開先にしたいフォルダーに書き換えて実行します。

$book = 'C:\Users\ユーザー名\Documents\商品カタログ.xlsx'
$work = 'C:\Users\ユーザー名\Documents\商品カタログ_中身'
$zip  = Join-Path $env:TEMP 'excel-images.zip'
Copy-Item -LiteralPath $book -Destination $zip -Force
Expand-Archive -LiteralPath $zip -DestinationPath $work
Remove-Item -LiteralPath $zip
$images = Get-ChildItem -LiteralPath $work -Recurse -File |
  Where-Object { $_.Extension -match '^\.(png|jpe?g|gif|bmp|tiff?|emf|wmf|svg)$' }
$images | Select-Object FullName, Length

元のブックは読み取るだけで、変更はしません。

テスト用のブックでは、次の4つのファイルが見つかりました。

展開先の中の場所大きさ(バイト)
xl\media\image1.png666
xl\media\image2.jpeg5430
xl\media\image3.png316
xl\media\image4.png666
テスト用のブックから見つかった画像

画像の名前は image1・image2 のような連番になっており、貼り付けたときの元のファイル名は残っていませんでした。

画像が入るフォルダーの名前は、公式ドキュメントでは確かめられなかったため、上のコマンドでは展開したフォルダー全体から画像の拡張子のファイルを探しています。

1つのフォルダーに集める

続けて次を実行すると、見つかった画像を1つのフォルダーにコピーできます。

$dest = 'C:\Users\ユーザー名\Documents\商品カタログ_画像'
New-Item -ItemType Directory -Path $dest | Out-Null
$images | Copy-Item -Destination $dest

名前を付け直したいときは、Windowsでファイル名を一括変更する方法の連番の付け方が使えます。

エクスプローラーで取り出す場合

ブックのコピーの拡張子を.xlsxから.zipに変えて開く方法もあります。

拡張子が見えていない場合は、Windows 11で拡張子を表示する方法で表示してから変えてください。

エクスプローラーでの操作は、この記事では画面で確かめていません。

取り出した画像の形式を確かめる

拡張子だけでなく、ファイルの中身が本当にその形式かを確かめたいときは、ファイルの先頭の数バイトを見ます。

次のコマンドは、集めたフォルダーの画像ごとに、中身の形式と縦横のピクセル数を表示します。

Add-Type -AssemblyName System.Drawing
Get-ChildItem -LiteralPath $dest -File | ForEach-Object {
  $fs = [IO.File]::OpenRead($_.FullName); $head = New-Object byte[] 4; [void]$fs.Read($head, 0, 4); $fs.Close()
  $kind = switch -Regex (($head | ForEach-Object { $_.ToString('X2') }) -join '') {
    '^89504E47' { 'PNG' } '^FFD8FF' { 'JPEG' } '^47494638' { 'GIF' } '^424D' { 'BMP' } default { 'その他' } }
  $img = [System.Drawing.Image]::FromFile($_.FullName); $w = $img.Width; $h = $img.Height; $img.Dispose()
  '{0}  {1}  {2}x{3}' -f $_.Name, $kind, $w, $h
}

テストでは、次のように表示されました。

image1.png  PNG  320x200
image2.jpeg  JPEG  640x480
image3.png  PNG  100x100
image4.png  PNG  320x200

テスト用のブックに入れた画像と、形式も縦横のピクセル数も同じでした。

元の画像と同じとは限らない

取り出せるのは、ブックの中に保存されている状態の画像です。

Microsoftのサポート記事「Microsoft Office で画像のファイル サイズを小さくする」によると、Microsoft 365の既定の画像の解像度は220ppiで、画像は圧縮されることがあります。

そのため、Excelに貼る前の元の画像より、取り出した画像のほうが小さかったり、画質が落ちていたりすることがあります。

同じ記事では、[ファイル]>[オプション]>[詳細設定]の[イメージのサイズと画質]で、既定の解像度を変えたり、圧縮しない設定にしたりできると説明されています。

元の画質が必要な場合は、ブックから取り出すより、元の画像ファイルを探すほうが確実です。

トリミングで隠した部分が残っていることがある

Microsoftのサポート記事「Office で図をトリミングする」では、トリミングした部分は非表示になるだけで、画像ファイルの一部として残ると説明されています。

ZIPとして展開して取り出した画像には、Excelの画面では見えていなかった部分が写っている可能性があります。

反対に、ほかの人にブックを渡すときに隠したい部分がある場合は、[図の圧縮]で[図のトリミング部分を削除する]を選んでから保存するよう案内されています。

画像をセルの大きさに合わせる方法は、Excelでセルに画像をぴったり合わせる方法にまとめています。

確かめていないこと

  • Excelで保存したブックを展開したときの、画像の置き場所とファイル名(テストはPythonで作ったブックで行った)
  • 同じ画像を何か所にも貼ったとき、Excelのブックの中で画像が1つにまとまるか(テスト用のブックでは2つの別のファイルとして入っていた)
  • セルの中に配置した画像(セル内画像)やIMAGE関数の画像の保存のされ方
  • Excelの[図として保存]の画面での操作
  • エクスプローラーで拡張子を変えてZIPとして開く操作

参照した資料は、Microsoftサポートの画像やその他のグラフィックを別ファイルとして保存する、Open XML 形式とファイル名拡張子、Microsoft Office で画像のファイル サイズを小さくする、Office で図をトリミングすると、Microsoft LearnのSpreadsheetML ドキュメントの構造です。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

仕事効率化のおすすめ書籍

仕事用PCの選び方

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次