<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>軽量化  |  独学エクセル塾</title>
	<atom:link href="https://dokugakuexcel.com/tag/%E8%BB%BD%E9%87%8F%E5%8C%96/feed/" rel="self" type="application/rss+xml" />
	<link>https://dokugakuexcel.com</link>
	<description>初心者から中級者までシステム・関数・VBAを伝授します</description>
	<lastBuildDate>Thu, 26 Jan 2023 12:41:18 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://dokugakuexcel.com/wp-content/uploads/2021/06/cropped-cropped-image-66-1-32x32.jpg</url>
	<title>軽量化  |  独学エクセル塾</title>
	<link>https://dokugakuexcel.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">194648711</site>	<item>
		<title>【マクロVBA】写真の軽量化！シート・ブック内の全ての写真を軽量化する方法</title>
		<link>https://dokugakuexcel.com/%e3%80%90%e3%83%9e%e3%82%af%e3%83%advba%e3%80%91%e5%86%99%e7%9c%9f%e3%81%ae%e8%bb%bd%e9%87%8f%e5%8c%96%ef%bc%81%e3%82%b7%e3%83%bc%e3%83%88%e3%83%bb%e3%83%96%e3%83%83%e3%82%af%e5%86%85%e3%81%ae/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2580%2590%25e3%2583%259e%25e3%2582%25af%25e3%2583%25advba%25e3%2580%2591%25e5%2586%2599%25e7%259c%259f%25e3%2581%25ae%25e8%25bb%25bd%25e9%2587%258f%25e5%258c%2596%25ef%25bc%2581%25e3%2582%25b7%25e3%2583%25bc%25e3%2583%2588%25e3%2583%25bb%25e3%2583%2596%25e3%2583%2583%25e3%2582%25af%25e5%2586%2585%25e3%2581%25ae</link>
					<comments>https://dokugakuexcel.com/%e3%80%90%e3%83%9e%e3%82%af%e3%83%advba%e3%80%91%e5%86%99%e7%9c%9f%e3%81%ae%e8%bb%bd%e9%87%8f%e5%8c%96%ef%bc%81%e3%82%b7%e3%83%bc%e3%83%88%e3%83%bb%e3%83%96%e3%83%83%e3%82%af%e5%86%85%e3%81%ae/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[matsu]]></dc:creator>
		<pubDate>Sun, 11 Sep 2022 14:56:13 +0000</pubDate>
				<category><![CDATA[写真・図]]></category>
		<category><![CDATA[マクロVBA]]></category>
		<category><![CDATA[シート]]></category>
		<category><![CDATA[ブック]]></category>
		<category><![CDATA[貼り付け]]></category>
		<category><![CDATA[写真]]></category>
		<category><![CDATA[軽量化]]></category>
		<guid isPermaLink="false">https://dokugakuexcel.com/?p=3488</guid>

					<description><![CDATA[エクセルを使用するなかで、ファイルの容量の管理は１つの課題です。例えば写真をたくさん入れていたり、図を多用していたり、不要な行・列数を使用していたり、容量の増加の原因は様々です。 その中でも容量が大きい写真の軽量化につい [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>エクセルを使用するなかで、<strong><span class="marker-under">ファイルの容量の管理は１つの課題</span></strong>です。<br>例えば写真をたくさん入れていたり、図を多用していたり、不要な行・列数を<br>使用していたり、容量の増加の原因は様々です。</p>



<p>その中でも<strong><span class="marker-under">容量が大きい写真の軽量化について説明</span></strong>したいと思います。</p>



<p>さらに今回は<strong><span class="marker-under-red">シート・ブック内すべての写真をまとめて<br>軽量化できるプログラム</span></strong>を紹介しますので是非参考にしてみてください。</p>



<p>それではみていきましょう！</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">&#x2b1b;︎こんなことができる！</a></li><li><a href="#toc2" tabindex="0">&#x2b1b;︎忙しい人向けのコピぺ用プログラム</a><ol><li><a href="#toc3" tabindex="0">・シート内の写真の軽量化</a></li><li><a href="#toc4" tabindex="0">・ブック内の写真の軽量化</a></li></ol></li><li><a href="#toc5" tabindex="0">&#x2b1b;︎写真が容量が大きい理由</a></li><li><a href="#toc6" tabindex="0">&#x2b1b;︎図を軽量化するプログラム</a></li><li><a href="#toc7" tabindex="0">&#x2b1b;︎対象シート内の写真を軽量化する</a></li><li><a href="#toc8" tabindex="0">&#x2b1b;︎対象ブック内の写真を軽量化する</a></li><li><a href="#toc9" tabindex="0">&#x2b1b;︎公式の説明</a></li><li><a href="#toc10" tabindex="0">&#x2b1b;︎注意点</a></li><li><a href="#toc11" tabindex="0">&#x2b1b;︎まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">&#x2b1b;︎こんなことができる！</span></h2>



<p>シート・ブック内の全ての写真を軽量化することができる</p>



<h2 class="wp-block-heading"><span id="toc2">&#x2b1b;︎忙しい人向けのコピぺ用プログラム</span></h2>



<h3 class="wp-block-heading"><span id="toc3">・シート内の写真の軽量化</span></h3>



<pre class="wp-block-verse">Sub シート内の画像軽量化()

Dim SelectPictures As Picture '対象の写真
Dim LeftPosition As Double, TopPosition As Double '左端・上端からの距離

For Each SelectPictures In ActiveSheet.Pictures
　If TypeName(SelectPictures) &lt;> "OLEObject" Then
　　SelectPictures.Select
　　LeftPosition=SelectPictures.Left
　　TopPosition=SelectPictures.Top
　　Selection.Cut
　　ActiveSheet.PasteSpecial Format:="図(JPEG)"
　　Selection.Left=LeftPosition
　　Selection.Top=TopPosition
　End If
Next

End Sub</pre>



<h3 class="wp-block-heading"><span id="toc4">・ブック内の写真の軽量化</span></h3>



<pre class="wp-block-verse">Sub ブック内の画像軽量化()

Dim SelectPictures As Picture '対象の写真
Dim LeftPosition As Double, TopPosition As Double '左端・上端からの距離
Dim CycleBook As Worksheet '対象のシート

For Each CycleBook In Worksheets 'シートを繰り返し格納
　CycleBook.Activate 'シートをアクティブ
　　For Each SelectPictures In ActiveSheet.Pictures　
　　If　TypeName(SelectPictures)&lt;>"OLEObject"Then
　　　SelectPictures.Select
　　　LeftPosition=SelectPictures.Left
　　　TopPosition=SelectPictures.Top
　　　Selection.Cut
　　　ActiveSheet.PasteSpecial Format:="図(JPEG)"
　　　Selection.Left=LeftPosition
　　　Selection.Top=TopPosition
　　　EndIf
　Next
Next
End Sub</pre>



<h2 class="wp-block-heading"><span id="toc5">&#x2b1b;︎写真が容量が大きい理由</span></h2>



<p>まず、プログラムを紹介するにあたり<br>なぜ、<strong><span class="marker-under">写真の容量が多いか理解</span></strong>しておきましょう。</p>



<p>見本でフリー素材の図を用意しました。</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="608" height="400" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-67-1.jpg" alt="" class="wp-image-3489" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-67-1.jpg 608w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-67-1-300x197.jpg 300w" sizes="(max-width: 608px) 100vw, 608px" /></figure>



<p><br>綺麗ですねー！</p>



<p>では図を拡大してみましょう。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="998" height="662" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-67-2.jpg" alt="" class="wp-image-3490" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-67-2.jpg 998w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-67-2-300x199.jpg 300w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-67-2-768x509.jpg 768w" sizes="(max-width: 998px) 100vw, 998px" /></figure>



<p><br>図を拡大してみましょう。</p>



<p><strong><span class="marker-under">拡大しても画質は綺麗</span></strong>ですね。<br>実はこの現象が容量増加の原因となります。</p>



<p>原理を説明すると、現在のサイズは写真本来のサイズが100％でなく<br><strong><span class="marker-under">現在のサイズ以上の画質を持っている</span></strong>ことになります。<br>言い方を変えれば<strong><span class="marker-under">余分な容量を使っている</span></strong>ということになります。</p>



<p>なので今回は現在のサイズに合わせて容量を適正にする方法です。<br>では本題に移りましょう。</p>



<h2 class="wp-block-heading"><span id="toc6">&#x2b1b;︎図を軽量化するプログラム</span></h2>



<p>ではプログラムを紹介します。<br>先程の説明で容量の増加の原因は余分な容量を写真が抱えている<br>ことが原因でした。</p>



<p>解決する方法として<strong><span class="marker-under">対象の図を切り取って再度そのサイズで<br>図として貼り付けます</span></strong>。そうするとそのサイズに合わせた容量で<br>貼り付けるので、その差ぶんの容量が減る仕組みです。</p>



<p>プログラムの構造を紹介します。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>対象の図.Select<br>Selection.Cut<br>ActiveSheet.PasteSpecial Format:=“図 (JPEG)”</p>
</blockquote>



<p>では説明です。<br>1行目の<strong><span class="marker-under-red">「対象の図.Select」では軽量化したい図を選択</span></strong>します。<br>2行目の<strong><span class="marker-under-red">「Selection.Cut」では先程選択した図を切り取り</span></strong>ます。<br>3行目の<strong><span class="marker-under-red">「ActiveSheet.PasteSpecial Format:=“図 (JPEG)”」<br>では切り取った写真を今のサイズの容量に合わせて貼り付け</span></strong>ます。</p>



<p>これで1つの対象の図を軽量化することができます。<br>後はブックまたはシート内の全ての写真を繰り返し選択して<br>上記の処理を行えばいいだけです。</p>



<p>では実践編を見てみましょう。</p>



<h2 class="wp-block-heading"><span id="toc7">&#x2b1b;︎対象シート内の写真を軽量化する</span></h2>



<p>ではこれまでの説明した内容をまとめて<br><strong><span class="marker-under">シート内の写真をすべて軽量化</span></strong>してみましょう。</p>



<p>まず、シート内の<strong><span class="marker-under">写真を繰り返し選択するプログラム</span></strong>を紹介します。<br>プログラムはこちらです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>For Each <span class="bold-red">変数</span> In ActiveSheet.Pictures</p>



<p>&#8216;ここに処理プログラム</p>



<p>Next</p>
</blockquote>



<p>これで<strong><span class="marker-under-red">シート内の写真を繰り返し変数に入れていきます。</span></strong></p>



<p>もう一つ課題があります。<br>それは選択した写真が「ActiveX」でないことを確認しないといけません。</p>



<p><strong><span class="marker-under-blue">「ActiveX 」とは開発タブの「挿入」にある「ActiveXコントロール」が<br>該当</span></strong>します。なぜ、ActiveX出ないことを確認する必要があるかというと<br>「Pictures 」で繰り返し変数に格納してますが、ActiveXも対象となってしまいます。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="939" height="332" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-67.png" alt="" class="wp-image-3491" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-67.png 939w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-67-300x106.png 300w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-67-768x272.png 768w" sizes="(max-width: 939px) 100vw, 939px" /></figure>



<p>さらにActiveXでVBAを動かしている人も多いでしょうから<br>軽量化にするプログラムを実行すると<strong><span class="marker-under-blue">ActiveXが図になってしまう</span></strong>ということに<br>なりかねません。</p>



<p>そこで<strong><span class="marker-under-blue">ActiveXか判別できるプログラム</span></strong>は下記のようになります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>If TypeName(<span class="bold-red">変数</span>) &lt;&gt; “OLEObject” Then<br>’ここに処理内容<br>End If</p>
</blockquote>



<p>条件の<strong><span class="marker-under">「OLEObject」とはActiveXを含むので<br>OLEObjectでないことを条件として処理します。</span></strong></p>



<p>さらにもう一つ課題があります。</p>



<p>それは<strong><span class="marker-under-red">切り取った位置と貼り付けた位置</span><span class="marker-under-red">が</span><span class="marker-under-red">異なる</span></strong>ことです。<br>手動で切り取ってみればわかるのですが、貼り付けの位置は現在選択しているセルになります。</p>



<p>そこで、<strong><span class="marker-under-red">切り取る前に現在の位置を記録しておき<br>貼り付けた際には記録した位置に戻す必要があります</span></strong>。</p>



<p>プログラムはこちらです。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><span class="bold-blue">左端からの写真の距離変数</span> = <span class="bold-red">変数</span>.Left<br><span class="bold-green">上端からの写真の距離変数</span> = <span class="bold-red">変数</span>.Top</p>



<p>&#8216;ここに写真を切り取って貼り付けるプログラム</p>



<p>Selection.Left = <span class="bold-blue">左端からの写真の距離変数</span><br>Selection.Top = <span class="bold-green">上端からの写真の距離変数</span></p>
</blockquote>



<p>こうなります。<br>左端・上端からの写真の距離を変数に格納しておき、<br>貼り付け後に写真の位置を元の位置に戻します。</p>



<p>では総まとめです。<br>これまでの切り取って写真で貼り付ける、シート内の写真を順次選択する、<br>写真の位置を元に戻すプログラムを一つにします。</p>



<p>結果はこのようになります。</p>



<pre class="wp-block-verse">Sub シート内の画像軽量化()

Dim<span class="bold-red"> SelectPictures</span> As Picture '対象の写真
Dim <span class="bold-blue">LeftPosition</span> As Double, <span class="bold-green">TopPosition</span> As Double '左端・上端からの距離

For Each <span class="bold-red">SelectPictures</span> In ActiveSheet.Pictures
　If TypeName(<span class="bold-red">SelectPictures</span>) &lt;> "OLEObject" Then
　　<span class="bold-red">SelectPictures</span>.Select
　　<span class="bold-blue">LeftPosition</span>=<span class="bold-red">SelectPictures</span>.Left
　　<span class="bold-green">TopPosition</span>=<span class="bold-red">SelectPictures</span>.Top
　　Selection.Cut
　　ActiveSheet.PasteSpecial Format:="図(JPEG)"
　　Selection.Left=<span class="bold-blue">LeftPosition</span>
　　Selection.Top=<span class="bold-green">TopPosition</span>
　End If
Next

End Sub</pre>



<p>これで完成です。<br>今回は見本で下図のようなシートを用意しました。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="634" height="422" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-68.jpg" alt="" class="wp-image-3492" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-68.jpg 634w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-68-300x200.jpg 300w" sizes="(max-width: 634px) 100vw, 634px" /></figure>



<p>シートの容量を見てみましょう。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="38" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-68-1024x38.png" alt="" class="wp-image-3493" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-68-1024x38.png 1024w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-68-300x11.png 300w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-68-768x28.png 768w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-68.png 1168w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>「<strong><span class="marker-under"><span class="bold-red">3152KB</span>」と、なかなか大きいですね。</span></strong></p>



<p>これをプログラムを実行するとこのようになりました。</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="139" src="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-69-1024x139.png" alt="" class="wp-image-3494" srcset="https://dokugakuexcel.com/wp-content/uploads/2022/09/image-69-1024x139.png 1024w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-69-300x41.png 300w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-69-768x104.png 768w, https://dokugakuexcel.com/wp-content/uploads/2022/09/image-69.png 1173w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong><span class="marker-under">「<span class="bold-red">288KB</span>」と容量が10倍以上小さく</span></strong>なっていますね。</p>



<h2 class="wp-block-heading"><span id="toc8">&#x2b1b;︎対象ブック内の写真を軽量化する</span></h2>



<p>今度はブック内に範囲を広げましょう。<br>考え方は先程と同様です。</p>



<p><strong><span class="marker-under">シート内の写真の軽量化の処理を<br>ブック内にあるシートすべて繰り返し処理</span></strong>をすれば可能です。</p>



<p>ではブック内のシートをアクティブにする繰り返しプログラムを<br>紹介したいと思います。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Dim 変数　As Worksheet</p>



<p>For Each 変数 In ThisWorkbook.Worksheets</p>



<p>変数.Activate<br>’ここに処理<br>Next</p>
</blockquote>



<p>これでアクティブブック内のシート全ての処理ができます。</p>



<p>では先ほどのプログラムに追加してみましょう。<br>このようになります。</p>



<pre class="wp-block-verse">Sub ブック内の画像軽量化()

Dim SelectPictures As Picture '対象の写真
Dim LeftPosition As Double, TopPosition As Double '左端・上端からの距離
Dim CycleBook As Worksheet '対象のシート

For Each CycleBook In Worksheets 'シートを繰り返し格納
　CycleBook.Activate 'シートをアクティブ
　　For Each SelectPictures In ActiveSheet.Pictures　
　　If　TypeName(SelectPictures)&lt;>"OLEObject"Then
　　　SelectPictures.Select
　　　LeftPosition=SelectPictures.Left
　　　TopPosition=SelectPictures.Top
　　　Selection.Cut
　　　ActiveSheet.PasteSpecial Format:="図(JPEG)"
　　　Selection.Left=LeftPosition
　　　Selection.Top=TopPosition
　　　EndIf
　Next
Next
End Sub</pre>



<p>これで先ほどシート内の写真を軽量化しましたが<br>ブック単位で軽量化することができます。</p>



<h2 class="wp-block-heading"><span id="toc9">&#x2b1b;︎公式の説明</span></h2>



<p>わかりやすいように説明したため公式と使用する語句が異なりますが マイクロソフト公式の説明については下記のリンクを参照してください。☟</p>



<p><a href="https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheet.pastespecial">Worksheet.PasteSpecial メソッド (Excel) | Microsoft Docs</a></p>



<h2 class="wp-block-heading"><span id="toc10">&#x2b1b;︎注意点</span></h2>



<p>今回紹介した方法は、<span class="marker-under"><strong>現在の写真のサイズに合わせて<br>画質を揃える方法</strong></span>でした。</p>



<p>しかし言い換えると、これまでは拡大しても画質が綺麗だったにも<br>かかわらず、<strong><span class="marker-under">プログラム実行後は拡大すると画質が悪くなります。</span></strong></p>



<p>写真を使いまわしたい場合は別のバックアップ等取っておく<br>必要がありますので、実行の際は気をつけてください。</p>



<h2 class="wp-block-heading"><span id="toc11">&#x2b1b;︎まとめ</span></h2>



<p>いかがだったでしょうか。<br>エクセルで図を貼り付ける機会がたくさんある方は<br>ファイルが重くなってないか確認してみてください。</p>



<p>重ければ入力や動作が遅くなる上<br>添付して送信する際にも時間がかかるなど<br>いいことはありません。</p>



<p>是非参考にしてみてください<br>それでは次回の記事でお会いしましょう。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dokugakuexcel.com/%e3%80%90%e3%83%9e%e3%82%af%e3%83%advba%e3%80%91%e5%86%99%e7%9c%9f%e3%81%ae%e8%bb%bd%e9%87%8f%e5%8c%96%ef%bc%81%e3%82%b7%e3%83%bc%e3%83%88%e3%83%bb%e3%83%96%e3%83%83%e3%82%af%e5%86%85%e3%81%ae/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3488</post-id>	</item>
	</channel>
</rss>
