仕事をしているとエクセルシートに大量の画像が張り付けられている、という状況は多いと思います。
この記事では、それらのすべての画像に対して、
「明るさを変更したい。」
「邪魔だから全部削除したい。」
といった、よくありそうなニーズをVBAを使って解決する方法をご紹介していきます。
具体的には以下の7つの状況を解決する方法をご紹介します。
◆明るさを変更
◆コントラストを変更
◆サイズを変更
◆背景を透明化
◆トリミングを行う
◆外枠を追加する
◆全部削除
記事中のコードをコピーして実行するだけですので、誰でも簡単に実行できるはずです。
ぜひあなたのニーズにあうものをコピーして実行してみましょう。
それでは早速やっていきます!
事前準備: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つの処理をすべて実行できることが確認できました。
おわりに
というわけで今回はエクセルシート上にある複数画像に対して、様々な処理を一括適用する方法をご紹介しました。
ぜひこのページをブックマークしていただき、いつでもコピーできるようにしておきましょう。
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント