【VBA】エクセルシート上にある画像を一括加工!7つの処理に分けて解説!

f:id:yshgs_elec:20210320143811p:plain

仕事をしているとエクセルシートに大量の画像が張り付けられている、という状況は多いと思います。

 

この記事では、それらのすべての画像に対して、

「明るさを変更したい。」

「邪魔だから全部削除したい。」

といった、よくありそうなニーズをVBAを使って解決する方法をご紹介していきます。

 

具体的には以下の7つの状況を解決する方法をご紹介します。

◆明るさを変更

◆コントラストを変更

◆サイズを変更

◆背景を透明化

◆トリミングを行う

◆外枠を追加する

◆全部削除

記事中のコードをコピーして実行するだけですので、誰でも簡単に実行できるはずです。

ぜひあなたのニーズにあうものをコピーして実行してみましょう。

 

それでは早速やっていきます!

スポンサーリンク

事前準備:VBAの環境構築

冒頭に説明した作業は、VBAをつかって実行していきます。

VBAを使ったことがない人は以下の記事を参考にVBAを使える環境を整えておきましょう。

【初心者用】エクセルマクロ(VBA)の始め方を詳細解説

※VBAはエクセルにもともと備わっている標準機能です。

ちょっとした設定で簡単に実行できます。

ぜひチャレンジしてみましょう。

 

スポンサーリンク

画像を一括加工するVBAコード

VBAの環境構築が終わったところで、本題に入っていきましょう。

冒頭にも説明したとおり、以下の7つの作業にわけてご紹介していきます。

①明るさを変更

②コントラストを変更

③サイズを変更

④背景を透明化

⑤トリミングを行う

⑥外枠を追加する

⑦全部削除

 

また、今回は以下の画像のようにシート上に画像が6枚並んでいる状態で処理を実行していきます。

※同じ画像を用いていますが、もちろん違う画像が張り付けられていてもOKです。

複数画像が張り付けられたエクセルシートサンプル

なお、以降でいくつもコードを紹介していきますが、実行するごとに、この画像に戻したうえで、次の処理を実行していくことにします。

 

それでは実際のコード紹介に移りましょう。

明るさを変更する方法

まずは明るさを変更する方法です。

◆VBAサンプルコード

Sub change_brightness()
    For i = 1 To 6
        ActiveSheet.Shapes(i).Select
        Selection.ShapeRange.PictureFormat.Brightness = 0.8
    Next
End Sub

たったのこれだけです。

非常に簡単ですね。

※コード中の0.8という数値が明るさの度合いを調整する部分です。

(初期値=0.5,  0~1の範囲で設定します。)

 

このコードを実行すれば、以下のように明るい画像に一括変更してくれます。

☆実行後

複数画像の明るさを一括調整した結果

問題なく実行できましたね。

 

さぁどんどんいきましょう。

コントラストを変更する方法

次はコントラストを変更する方法です。

◆VBAサンプルコード

Sub change_contrast()
    For i = 1 To 6
        ActiveSheet.Shapes(i).Select
        Selection.ShapeRange.PictureFormat.Contrast = 0.8
    Next
End Sub

※コード中の0.8という数値がコントラストの度合いを調整する部分です。

(初期値=0.5,  0~1の範囲で設定します。)

こいつを実行すると以下のようになりました。

 

実行後の画像

複数画像のコントラストを一括調整した結果

最初の画像との違いがよくわかりませんが、なんとなくシャープになった感じですね。

わかりにくいんで最初の画像ものせておきます。

 

実行前の画像

画像処理を実施する前の画像確認結果

ちょっとわかりにくかったですね・・・。

 

まぁ気を取り直して次にいきましょう!

サイズを変更する方法

次は画像のサイズを一括変更する方法です。

◆VBAサンプルコード

Sub change_size()
    For i = 1 To 6
       ActiveSheet.Shapes(i).Select
       Selection.Width = 100
    Next
End Sub

※コード中の100というところが、画像の大きさを調整する部分です。

(ここは実行しながら調整するのが良いでしょう。)

こいつを実行すると以下のようになりました。

 

実行後の画像

複数画像のサイズを一括調整した結果

今回はわかりやすく変化しましたね。

 

次に行きましょう。

背景を透明にする方法

次は背景を透明にする方法です。

◆VBAサンプルコード

Sub set_tomei()
    tomei = RGB(0, 0, 0)
    For i = 1 To 6
        ActiveSheet.Shapes(i).Select
        Selection.ShapeRange.PictureFormat.TransparencyColor = tomei
    Next
End Sub

※コード中のRGB(0,0,0)の部分で背景色を設定しています。

(今回は真っ黒の領域を透明にするようにしています。)

真っ白領域を透明にしたい場合は、RGB(255,255,255)に変更しましょう。

こいつを実行すると以下のようになりました。

 

実行後の画像

複数画像に対して背景透過処理を一括実施した結果

黒い部分がなくなって、背景の格子線が見えるようになっていますね。

⇒しっかりと透明になっていることが確認できました。

次にいきましょう。

トリミングを行う方法

次はトリミングを行う方法です。

◆VBAサンプルコード

Sub make_triming()
    For i = 1 To 6
        ActiveSheet.Shapes(i).Select
        Selection.ShapeRange.PictureFormat.CropTop = 30
    Next
End Sub

※コード中のCroptop=30のところでトリムする領域を設定しています。

(今回は上側を30ピクセル分除去するように設定しています。)

トリムする辺を変更したい場合は、Croptopの部分を以下のように変更しましょう。

 

☆調整方法

上をトリムする:Croptop

下をトリムする:Cropbottom

左をトリムする:Cropleft

右をトリムする:Cropright

こいつを実行すると以下のようになりました。

 

実行後の画像

複数画像のトリミング処理を一括実行した結果

しっかり各画像の上側が少し切り取られていますね。

次に行きましょう。

外枠を追加する方法

次は画像に外枠を追加する方法です。

◆VBAサンプルコード

Sub set_outcolor()
    For i = 1 To 6
        ActiveSheet.Shapes(i).Select
        With Selection
            .ShapeRange.Line.Visible = msoTrue
            .ShapeRange.Line.ForeColor.RGB = RGB(0, 255, 0)
            .ShapeRange.Line.Weight = 5
        End With
    Next
End Sub

ここは少し面倒で、

①線を追加

②線の色を指定

③線の太さを指定

という処理を行う必要があります。

そのためさきほどと少しコードの書き方が違っていますが、まぁ気にせずコピーすればOKです。

※コード中のRGB(0, 255, 0)を変更すれば、線の色を変更できます。

また、コード中の.Weight = 5のところの数値で線の太さを設定しています。

⇒適宜あなたの状況に応じて設定してください。

先ほどのコードを実行すると以下のようになりました。

 

実行後の画像

複数画像の画像の枠線追加処理を一括実行した結果

しっかり外枠が追加されていることが確認できます。

次でラストです。

全画像を削除する方法

最後はシート上にある全画像を削除する方法です。

◆VBAサンプルコード

Sub delete_pic()
    For i = 1 To 6
        ActiveSheet.Shapes(1).Select
        Selection.Delete
    Next
End Sub

このコードは特に調整項目はありません。

 

こいつを実行すると以下のようになりました。

実行後の画像

複数画像のを一括削除した結果

載せるまでもありませんが・・・。

いずれにせよ、冒頭に紹介した7つの処理をすべて実行できることが確認できました。

 

スポンサーリンク

おわりに

というわけで今回はエクセルシート上にある複数画像に対して、様々な処理を一括適用する方法をご紹介しました。

ぜひこのページをブックマークしていただき、いつでもコピーできるようにしておきましょう。

 

このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

 

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。

⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

それではまた!

コメント

タイトルとURLをコピーしました