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

f:id:yshgs_elec:20210320143811p:plain

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

 

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

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

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

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

 

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

◆明るさを変更

◆コントラストを変更

◆サイズを変更

◆背景を透明化

◆トリミングを行う

◆外枠を追加する

◆全部削除

 

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

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

 

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

 

スポンサーリンク

事前準備:VBAの環境構築

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

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

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

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

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

 

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

スポンサーリンク

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

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

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

①明るさを変更

②コントラストを変更

③サイズを変更

④背景を透明化

⑤トリミングを行う

⑥外枠を追加する

⑦全部削除

 

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

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

f:id:yshgs_elec:20210320135211j:plain

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

 

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

 

明るさを変更する方法

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

 

◆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の範囲で設定します。)

 

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

☆実行後

f:id:yshgs_elec:20210320135557j:plain

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

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

 

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

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

 

◆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の範囲で設定します。)

 

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

実行後の画像

f:id:yshgs_elec:20210320140414j:plain

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

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

実行前の画像

f:id:yshgs_elec:20210320135211j:plain

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

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

 

サイズを変更する方法

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

 

◆VBAサンプルコード

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

 

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

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

 

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

実行後の画像

f:id:yshgs_elec:20210320140644j:plain

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

 

次に行きましょう。

 

背景を透明にする方法

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

 

◆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)に変更しましょう。

 

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

実行後の画像

f:id:yshgs_elec:20210320141148j:plain

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

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

 

次にいきましょう。

 

トリミングを行う方法

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

 

◆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

 

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

実行後の画像

f:id:yshgs_elec:20210320141422j:plain

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

 

次に行きましょう。

 

外枠を追加する方法

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

 

◆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のところの数値で線の太さを設定しています。

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

 

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

実行後の画像

f:id:yshgs_elec:20210320142551j:plain

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

 

次でラストです。

 

全画像を削除する方法

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

 

◆VBAサンプルコード

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

 

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

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

実行後の画像

f:id:yshgs_elec:20210320142753j:plain

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

 

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

 

スポンサーリンク

おわりに

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

 

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

 

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

・日々の残業時間を減らしたい。

・業務をもっと効率的にこなしたい。

・もっと勉強する時間を作りたい。

こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。

 

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

 ↓ 応援ボタン

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

 

それではまた!

コメント

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