エクセルファイルに画像や写真を挿入していると、あっという間にファイルサイズが数十MBにまで膨れ上がってしまうことはありませんか。
ファイルサイズが大きくなると、メールで送信できない、開くのに時間がかかる、動作が重くなる、共有フォルダの容量を圧迫するといった問題が発生します。
特に商品カタログや報告書、プレゼン資料など、複数の高解像度画像を含むファイルでは、サイズが100MBを超えることも珍しくありません。
Excelには、挿入した画像を圧縮してファイルサイズを削減する機能が標準で搭載されています。
個別の画像圧縮から、ファイル内のすべての画像を一括で圧縮する方法、保存時の自動圧縮設定まで、目的に応じて複数の手法を使い分けられるのです。
本記事では、エクセルで画像・写真オブジェクトを一括圧縮し、ファイルサイズを大幅に削減する実践的な方法を詳しく解説します。
重いファイルの軽量化に困っている方は、ぜひ最後までお読みください。
ポイントは
・図の圧縮機能で全画像を一括処理
・保存オプションで自動圧縮を設定
・VBAマクロで圧縮を完全自動化
です。
それでは詳しく見ていきましょう。
Excelの標準機能で画像を一括圧縮する方法
それではまずExcelの標準機能で画像を一括圧縮する方法について解説していきます。
図の圧縮機能の基本操作
Excelには、挿入された画像を圧縮する「図の圧縮」機能が標準搭載されています。
この機能を使えば、画質を維持しながらファイルサイズを大幅に削減できます。
図の圧縮を行うには、まずシート内の任意の画像を1つクリックして選択します。画像を選択すると「図の形式」タブが表示されるので、そこから「図の圧縮」ボタンをクリックします。
「図の圧縮」ダイアログが開いたら、「この画像だけに適用する」のチェックを外します。これが重要なポイントで、このチェックを外すことでファイル内のすべての画像が一括で圧縮されます。
次に解像度を選択します。推奨は「電子メール用(96ppi)」ですが、用途に応じて選択しましょう。さらに「図のトリミング部分を削除する」にチェックを入れて、最後にOKをクリックすれば完了です。
「この画像だけに適用する」のチェックを外すことで、ファイル内のすべての画像が一括で圧縮されます。
これが一括圧縮の最も簡単で確実な方法です。
解像度の選択肢と推奨用途は以下の通りです。高解像度(330ppi)は印刷用で高品質が必要な場合に使用します。HD(220ppi)または印刷用(220ppi)は標準的な印刷品質に対応しています。
Web用(150ppi)はWeb表示やプレゼン用に適しており、電子メール用(96ppi)はメール添付時に最も圧縮率が高くなります。
| 解像度 | 用途 | 圧縮率 |
|---|---|---|
| 電子メール用(96ppi) | メール添付、社内共有 | 最大(ファイルサイズ最小) |
| Web用(150ppi) | 画面表示、プレゼン | 中程度 |
| 印刷用(220ppi) | 通常の印刷物 | 小さい |
| 高解像度(330ppi) | 高品質印刷 | 最小(ファイルサイズ大) |
社内資料やメール添付であれば、電子メール用(96ppi)で十分な画質が保たれるでしょう。
印刷を前提としない限り、最も圧縮率の高い設定を選ぶことをおすすめします。
トリミング部分の削除で更に軽量化
画像をExcelに挿入後、トリミング機能で不要な部分をカットした場合、見えない部分のデータも保持されているため、ファイルサイズが大きいままです。
「図のトリミング部分を削除する」オプションを有効にすることで、この隠れたデータを完全に削除できます。
トリミング部分を削除すると、表示されていない画像データが完全に削除されます。ただし、元の画像に戻すことはできなくなるため注意が必要です。
ファイルサイズは大幅に削減され、特に複数の画像をトリミングしている場合は効果が大きくなります。
この設定は、図の圧縮ダイアログ内で「図のトリミング部分を削除する」にチェックを入れることで有効になります。
元の画像に戻す必要がない場合は、必ずチェックを入れることをおすすめします。
実際の圧縮効果の例を見てみましょう。元のファイルで画像10枚(各2MB)を含む場合、ファイルサイズは約21MBになります。
これを電子メール用96ppiで圧縮すると、同じ画像10枚でファイルサイズは約3MBになり、削減率は約85%の軽量化となります。
この例のように、適切な圧縮設定を使えば、ファイルサイズを10分の1以下にすることも可能です。
リボンから素早くアクセスする方法
頻繁に画像圧縮を行う場合、クイックアクセスツールバーに登録しておくと便利です。
クイックアクセスツールバーへ登録するには、画像を選択して「図の形式」タブを表示します。次に「図の圧縮」ボタンを右クリックして、「クイックアクセスツールバーに追加」を選択します。
すると画面上部のツールバーにアイコンが追加され、以降は画像を選択後、ツールバーのアイコンをクリックするだけで圧縮できるようになります。
また、キーボード操作に慣れている方は、Alt キーを使ったリボンアクセスも効率的です。
画像を選択した状態でAltキーを押し、J → P → M → O の順にキーを押すと、図の圧縮ダイアログが開きます。各キーは順番に押す形で、同時押しではありません。
これらのショートカットを覚えておくと、マウス操作よりも素早く圧縮処理を実行できるでしょう。
画像圧縮を実行する前に、必ずファイルのバックアップを作成しましょう。
圧縮は不可逆的な処理のため、一度実行すると元の高解像度画像には戻せません。
特に印刷用の資料を作成している場合は、元データを別ファイルとして保管してから圧縮することをおすすめします。
保存時の自動圧縮設定でファイルを最適化
続いては保存時の自動圧縮設定でファイルを最適化する方法を確認していきます。
Excelオプションでの既定値設定
毎回手動で画像を圧縮するのが面倒な場合、ファイル保存時に自動的に圧縮する設定を有効にできます。
この設定により、画像を挿入するたびに自動で最適化されるため、ファイルサイズの増大を防げます。
自動圧縮を設定するには、「ファイル」タブから「オプション」をクリックします。「詳細設定」を選択して、「イメージのサイズと画質」セクションを探します。
ここで「ファイル内のイメージを圧縮しない」のチェックを外し、「既定の解像度」を選択します。推奨は電子メール用96ppiですが、用途に応じて選択しましょう。最後にOKをクリックすれば設定完了です。
この設定は、新しく作成するファイルにも適用されます。
既存のファイルに対しては、一度開いて保存し直すことで圧縮が実行されるでしょう。
既定の解像度は、すべてのファイルに適用するか、このファイルのみに適用するかを選択できます。Excel全体の設定として保存することも、ファイルごとに個別設定することも可能です。
推奨設定としては、社内資料・報告書には96ppi(電子メール用)、プレゼン資料には150ppi(Web用)、印刷資料には220ppi(印刷用)が適しています。
自動圧縮を有効にしておくと、画像を挿入した時点で自動的に最適化されるため、後から圧縮作業をする手間が省けます。
編集データの破棄設定
画像の圧縮と合わせて、編集データを破棄する設定も有効にすることで、さらにファイルサイズを削減できます。
編集データを破棄するには、「ファイル」タブから「オプション」をクリックし、「詳細設定」を選択します。「イメージのサイズと画質」セクション内にある「編集データを破棄する」にチェックを入れて、OKをクリックします。
この設定を有効にすると、画像のトリミングや調整を行った際に、元の編集前データが自動的に削除されます。
元に戻す必要がない場合は、この設定を有効にすることでファイルサイズをさらに削減できるでしょう。
編集データを破棄すると、トリミング前の画像データや色調整・効果適用前のデータが削除されます。これによりファイルサイズが10〜30%程度削減される可能性があります。
ただし、元の状態に戻す編集はできなくなるため、注意が必要です。
ファイルごとの個別設定
すべてのファイルで自動圧縮を有効にしたくない場合、特定のファイルだけに圧縮設定を適用することもできます。
ファイル単位で設定するには、対象ファイルを開いた状態で「ファイル」タブから「オプション」を選択します。「詳細設定」を選択し、「このファイルのみ」のラジオボタンを選択します。
その後、解像度を設定し、「ファイル内のイメージを圧縮しない」のチェックを外してOKをクリックすれば完了です。
この方法を使えば、印刷用の高品質ファイルと、メール添付用の軽量ファイルで異なる設定を維持できます。
用途に応じてファイルごとに最適な設定を選択することで、品質とファイルサイズのバランスを取れるでしょう。
自動圧縮設定を有効にする際は、用途を十分に考慮しましょう。
高品質な印刷物を作成する場合、96ppiでは解像度が不足する可能性があります。
印刷用途とデジタル配布用途でファイルを分けて管理し、それぞれに適切な圧縮設定を適用することが理想的です。
VBAマクロで画像圧縮を自動化
続いてはVBAマクロを使って画像圧縮を自動化する方法を確認していきます。
全画像を一括圧縮するマクロ
大量の画像を含むファイルや、複数のシートにまたがって画像が配置されている場合、VBAマクロによる自動圧縮が効率的です。
以下のコードで、アクティブシート内のすべての画像を一括圧縮できます。
Sub 画像を一括圧縮()
Dim shp As Shape
Dim count As Integer
count = 0
For Each shp In ActiveSheet.Shapes
If shp.Type = msoPicture Or shp.Type = msoLinkedPicture Then
shp.PictureFormat.CropLeft = 0
shp.PictureFormat.CropRight = 0
shp.PictureFormat.CropTop = 0
shp.PictureFormat.CropBottom = 0
count = count + 1
End If
Next shp
MsgBox count & "個の画像を処理しました。" & vbCrLf & _
"ファイルを保存すると圧縮が完了します。"
End Sub
このマクロを実行するには、Alt + F11でVBAエディタを開き、「挿入」から「標準モジュール」を選択します。上記のコードを貼り付けたら、Alt + F8でマクロ一覧を開き、「画像を一括圧縮」を選択して実行します。
最後にファイルを保存(Ctrl + S)すれば完了です。
このマクロは、トリミング情報をリセットすることで、保存時の圧縮処理を最適化します。
実際の圧縮はファイル保存時に実行されるため、マクロ実行後は必ずファイルを保存しましょう。
全シートの画像を一括処理するマクロ
複数のシートに画像が配置されている場合、ブック内のすべてのシートを対象にするマクロが便利です。
Sub 全シートの画像を圧縮()
Dim ws As Worksheet
Dim shp As Shape
Dim totalCount As Integer
Dim sheetCount As Integer
totalCount = 0
sheetCount = 0
For Each ws In ThisWorkbook.Worksheets
For Each shp In ws.Shapes
If shp.Type = msoPicture Or shp.Type = msoLinkedPicture Then
shp.PictureFormat.CropLeft = 0
shp.PictureFormat.CropRight = 0
shp.PictureFormat.CropTop = 0
shp.PictureFormat.CropBottom = 0
totalCount = totalCount + 1
End If
Next shp
If ws.Shapes.Count > 0 Then
sheetCount = sheetCount + 1
End If
Next ws
MsgBox sheetCount & "個のシートで" & totalCount & "個の画像を処理しました。" & vbCrLf & _
"ファイルを保存すると圧縮が完了します。"
End Sub
このマクロは、ブック内のすべてのシートをループ処理し、各シートの画像を最適化します。
処理したシート数と画像数を表示するため、結果が分かりやすくなっています。
大規模なファイルでも、このマクロを実行すれば一度にすべての画像を処理できるでしょう。
画像サイズを取得してレポート作成
圧縮前にファイルの状況を把握したい場合、画像の情報を一覧表示するマクロも便利です。
Sub 画像情報を表示()
Dim ws As Worksheet
Dim shp As Shape
Dim reportSheet As Worksheet
Dim row As Integer
'新しいシートを作成
Set reportSheet = ThisWorkbook.Worksheets.Add
reportSheet.Name = "画像情報レポート"
'見出し作成
reportSheet.Cells(1, 1).Value = "シート名"
reportSheet.Cells(1, 2).Value = "画像名"
reportSheet.Cells(1, 3).Value = "幅"
reportSheet.Cells(1, 4).Value = "高さ"
row = 2
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "画像情報レポート" Then
For Each shp In ws.Shapes
If shp.Type = msoPicture Or shp.Type = msoLinkedPicture Then
reportSheet.Cells(row, 1).Value = ws.Name
reportSheet.Cells(row, 2).Value = shp.Name
reportSheet.Cells(row, 3).Value = shp.Width
reportSheet.Cells(row, 4).Value = shp.Height
row = row + 1
End If
Next shp
End If
Next ws
MsgBox "画像情報レポートを作成しました"
End Sub
このマクロを実行すると、新しいシートに画像の一覧が作成されます。
どのシートにどのサイズの画像があるかを一目で確認できるため、圧縮の必要性を判断する材料になるでしょう。
VBAマクロで画像を処理する際は、実行前に必ずファイルのバックアップを作成しましょう。
マクロの実行は元に戻すことができないため、予期しない結果になった場合に備える必要があります。
また、大量の画像を処理する場合は、マクロの実行に数分かかることがあるため、処理中は他の操作を控えることをおすすめします。
画像圧縮時の注意点とトラブル対処
続いては画像圧縮時の注意点とトラブル対処方法を確認していきます。
圧縮による画質劣化を防ぐ
画像を圧縮すると、解像度が下がり画質が劣化する可能性があります。
用途に応じて適切な解像度を選択することが重要です。
用途別の推奨解像度を確認しましょう。電子メール・社内共有には96ppiが適しており、メール添付資料、社内報告書、画面での閲覧のみの場合に最も軽量化できます。
Web・プレゼン資料には150ppiが適しており、PowerPointへの転用、プロジェクター投影、デジタルカタログなどで画質と容量のバランスが良好です。
印刷資料には220ppiが必要で、A4印刷物、配布資料、カラー印刷など、印刷に耐える品質を保てます。
高品質印刷には330ppiが必要で、ポスター、パンフレット、商業印刷などに対応しますが、ファイルサイズは大きくなります。
圧縮後に印刷が必要になる可能性がある場合は、元の高解像度ファイルを別途保管しておくことをおすすめします。
ファイル管理の推奨方法として、マスターファイル(高解像度)を編集用・印刷用として保管し、配布用ファイル(圧縮済み)をメール添付・共有用として使い分けます。
ファイル名で区別すると分かりやすく、「報告書_master.xlsx」「報告書_配布用.xlsx」のように命名すると良いでしょう。
圧縮できない画像の対処法
一部の画像形式や、特殊な挿入方法の画像は、標準の圧縮機能では処理できない場合があります。
圧縮できない画像の例として、リンク画像(埋め込みではない)、図形に変換された画像、SmartArtやグラフに組み込まれた画像、保護されたオブジェクトなどがあります。
これらの画像を圧縮したい場合の対処法を確認しましょう。
リンク画像の場合は、画像を右クリックして「リンクの編集」を選択し、「リンクの解除」を選択して埋め込み画像に変換してから、通常の方法で圧縮します。
図形に変換された画像の場合は、図形を削除して元画像を再挿入し、圧縮後、必要に応じて図形として設定します。
外部ツールでの圧縮も選択肢の一つです。画像を外部保存し、TinyPNGなどのオンラインツールで圧縮してから、圧縮済み画像を再挿入します。
圧縮後のファイルサイズが期待より大きい場合
画像を圧縮してもファイルサイズがあまり減らない場合、他の要因でサイズが増大している可能性があります。
ファイルサイズが大きい他の原因として、大量の数式や関数、ピボットテーブルのキャッシュデータ、不要な書式設定が大量にある、非表示シートに大量データがある、過去の編集履歴が残っているなどが考えられます。
画像以外の要因でファイルサイズを削減する方法も確認しましょう。
追加の軽量化手順として、不要なシートを削除する、ピボットテーブルのデータソース更新を行う、「名前を付けて保存」で新規ファイルとして保存する(履歴削除)、使用していない範囲の書式をクリアする、条件付き書式の見直しを行うなどがあります。
これらの対策と画像圧縮を組み合わせることで、ファイルサイズを最大限削減できるでしょう。
画像圧縮を実行する前に、必ず元のファイルをバックアップとして保存しましょう。
圧縮は不可逆的な処理のため、一度実行すると元の高解像度には戻せません。
特に顧客向け資料や印刷物を作成する場合は、マスターファイルと配布用ファイルを分けて管理することが重要です。
まとめ エクセルの画像を一括圧縮してファイルサイズ削減
エクセルの画像・写真を一括圧縮してファイルサイズを削減する方法をまとめると
・図の圧縮機能:画像を1つ選択し「この画像だけに適用する」のチェックを外すことで全画像を一括圧縮
・解像度の選択:電子メール用(96ppi)で最大の軽量化、用途に応じて150ppi、220ppiを使い分け
・トリミング部分削除:見えない編集データを削除してさらにサイズ削減
・自動圧縮設定:Excelオプションで保存時の自動圧縮を有効化すると継続的に最適化
・VBAマクロ:全シートの画像を一括処理し、大規模ファイルでも効率的に圧縮
これらの方法を適切に使い分けることで、ファイルサイズを大幅に削減できます。
特に図の圧縮機能による一括処理は、数クリックで完了するため、最も手軽で効果的な方法です。
ただし、圧縮は不可逆的な処理であることに注意が必要です。
高品質な印刷が必要になる可能性がある場合は、元の高解像度ファイルを別途保管することが重要です。
また、メール添付や社内共有では96ppiで十分な画質が保たれるため、用途に応じた適切な解像度を選択しましょう。
エクセルの画像圧縮機能を正しく活用して、軽量で扱いやすいファイルを作成していきましょう!