【VBA】シート上にある画像の明るさを一括変更する方法!

f:id:yshgs_elec:20210318212212p:plain

「エクセルの画像を大量に張り付けたものの、ちょっと暗くて見にくいな。」

「明るさを調整すれば問題なさそうだけど、ひとつひとつ修正するのは面倒だ。」

 

この記事では、こんな悩みを一瞬で解決する方法をご紹介します。

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

 

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

 

スポンサーリンク

紹介するスキルの概要説明

 まずはじめに、この記事で紹介する内容を簡単にご説明しておきます。

 

今回は以下の画像のように画像がエクセルシートにたくさん並べられている状況を想定しています。

※実際はいろいろな画像を張り付けていると思いますが、今回は面倒なので同じ画像を張り付けています。別の画像でも問題なく動作しますのでご安心を。

f:id:yshgs_elec:20210318205339j:plain

 

これらの画像を一瞬で以下のようにすこし明るめに一括変更していきます。

f:id:yshgs_elec:20210318205418j:plain

※もちろん暗めに変更することも可能です。

 

あなたのやりたいことと一致していれば、ぜひ続きをご覧ください。 

 

スポンサーリンク

VBA環境を構築しておく

先ほどの作業は、VBAをつかって実行していきます。

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

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

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

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

 

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

スポンサーリンク

シート上の画像の明るさを一括変更するVBAコード

VBAの環境構築が終わったところで、さっそくVBAコードを記述していきましょう。

 

以下が冒頭に説明した作業を実行してくれるVBAコードです。

 

◆VBAサンプルコード

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

 

たったのこれだけです。

非常に簡単ですね。

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

 

☆変更前

f:id:yshgs_elec:20210318205339j:plain

変更後

f:id:yshgs_elec:20210318205418j:plain

 

スポンサーリンク

サンプルコードの解説

念のため、あなたの状況に応じて、作業内容を変更できるように、先ほどのコードの要点を簡単に解説しておきましょう。

 

コード解説①画像の枚数指定

基本的にこのコードでは、ある画像を一枚選ぶ⇒明るさを変更する、という一連の作業を画像の枚数分繰り返しているだけです。

 

それぞれの画像には、張り付けられた時点で1から順番に番号が割り振られているので、その番号を順番に呼び出していくことで、それぞれの画像を選択していくことが可能です。

(ActiveSheet.Shapes(i).Selectがここに該当します。)

 

今回はエクセルシート上に6枚の画像があることがわかっているため、画像の呼び出し回数を6回に設定すれば、すべての画像に処理を適用できるというわけです。

(For i = 1 to 6⇐この部分ですね。)

もし10枚画像があることがわかっていれば、コード中の6を10に変更しましょう。

仮に何枚あるかわからない場合は、適当に大きな数字を入れておいてもOKです。

(実行したらエラーがでますが、終了を押せばOKです。)

 

コード解説②画像の明るさ変更方法

基本的に画像の明るさを変更するには、ある画像を選択し、

Selection.ShapeRange.PictureFormat.Brightness = 明るさ度合

というコードで実行することが出来ます。

 

この明るさ度合は、読み込んだ生の画像で0.5になっており、数値を大きくするほど明るくなり、小さくするほど暗くなります。

先ほどのサンプルコードでは、ここを0.8にしていましたが、0.3に変更すると以下のような結果が得られました。

f:id:yshgs_elec:20210318210909j:plain

すこし暗くなったことがわかると思います。

 

変更する可能性があるところはこのくらいでしょう。

ぜひあなたの状況に応じてご活用ください。

 

スポンサーリンク

おわりに

というわけで今回は

◆エクセルシート上の表をまるごと変数化する方法

◆その変数の中から欲しいデータを取り出す方法

についてご紹介しました。

知っておくだけで、コードの記述量を大幅削減できることもありますので、ぜひマスターしておきましょう。

 

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

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

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

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

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

 

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

 ↓ 応援ボタン

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

 

それではまた!

コメント

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