コマ画像の位置を表示するExcel VBA マクロの開発


ホーム全般的な解説タイプ別の作り方よくある質問ソフトの動画解説くっきりんこブログアクセスお問い合わせ


このページの解説では以下のソフトウェアを使用します。

名称 使い方の解説ページ ダウンロードページ
デジカメまとめてフォトモザイク 動画解説 ダウンロードページ
エクセルも使います。


エクセルでフォトモザイクのコマ画像の位置を表示する


 このページではエクセルで以下のようなものを作ります。 フォトモザイク画像を半透明で表示し、コマ画像のファイル名を指定すると、そのコマ画像がフォトモザイクのどの位置に使用されているのかを赤い四角で表示するというものです。






デジカメまとめてフォトモザイク新バージョンの機能紹介


 2020年2月に公開した「デジカメまとめてフォトモザイク1.16.0.0」では、コマ画像の位置とコマ画像のファイル名をCSV形式のファイルで保存できるようになりました。 CSVファイルというのはエクセルで開くことができます。






写真12100枚からフォトモザイクの作成


 に倣って写真12100枚を用意してフォトモザイクを作成しました。 で使用したものと同一の背景画像、コマ画像を使用しました。



 設定値もすべて同じでやってみます。



 フォトモザイク設定ウィンドウを部分的に拡大してみると、このような感じで、枚数の確認欄を見ると110枚×110枚で総コマ数は12100枚です。



 色補正もと同じにしました。



 コマ画像選抜方法は「使用回数を制限する」とし、これもと同じです。



 コマ画像12100枚を使用した、全コマバラバラのフォトモザイクがあっという間に完成しました。



 「コマ画像の位置を保存」「横位置、縦位置、ファイル名を保存」としますと、エクセルのアイコンがついている「.csv」ファイルが保存されます。



 エクセルで開いてみました。 A列はx位置、B列はy位置、C列はコマ画像のファイル名です。 このデータをもとに、コマ画像のファイル名を指定すると、フォトモザイクのどこにその写真が配置されているのかが視覚的にわかるエクセルマクロを作っていきます。



 ワークシートを作ります。「イメージ」と「検索ファイル名」という2枚のワークシートを作りました。



 VBAを書きました。 簡単に説明すると、 Sheet2の110列、110行までを灰色で塗り潰したのち、 Sheet3のA1セルに入力したファイル名と同一のファイル名をSheet1のC列から検索し、 一致する行のA,B列の値を読み取り、コマ画像の位置を特定し、Sheet2のコマ画像の位置を赤で塗り潰すというマクロです。



 「検索ファイル名」シートのA1にファイル名を入力します。



 マクロを実行します。



 「10万枚フォトモザイク」シートを見ると、「検索ファイル名」シートに入力したファイル名に対応するx位置は32、y位置は73です。 この32,73という数値は0から数えた数値だということを忘れてはいけません。 一番左端を0として左から32番目、一番上を0として上から73番目です。 普通の数え方をすれば左から33番目、上から74番目です。



 「イメージ」シートを見ると110行、110列の範囲が灰色で塗り潰され、赤いセルが一つできています。この赤いセルが「検索ファイル名」シートに入力したファイル名のコマ画像のフォトモザイク中の位置です。 110行、110列の範囲は各セルの縦横サイズの比率をフォトモザイクのコマ画像の縦横の比率にだいたい合わせています。 正確には合わせていませんので、後で張り付けるフォトモザイク画像は縦横比が少し狂ってしまいました。



 灰色の範囲にフォトモザイク画像を半透明で合成します。 挿入タブから長方形を挿入します。



 灰色の範囲を長方形できっちりと埋めます。



 図の書式設定から塗りつぶしを選択して画像を挿入します。



 フォトモザイク画像を選びます。



 透明度を70%ぐらいに設定します。



 「検索ファイル名」シートに検索したいファイル名を入力します。



 マクロを実行します。



 「10万枚フォトモザイク」シートを見ると、左から37番目、上から18番目のコマ画像であることが分かります。 この数値はいずれも0から数えての数値なので、普通に数えれば左から38番目、上から19番目になります。



 「イメージ」シートを見るとフォトモザイク画像が半透明に表示され、赤いセルが一つできています。



 赤いセルの部分を拡大してみると19行AL列のセルであることが分かります。 これは上から19番目、左から38番目ということで想定通りの動作をしていることが確認できました。

 以上でコマ画像の位置をフォトモザイク中から検索するエクセルマクロが完成しました。 今回の例ではコマ画像は全てばらばらのフォトモザイクで試しましたので、 コマ画像ファイル名を1つ指定すると、赤く塗りつぶされるセルは1つでした。 しかし、今回作成したマクロは、コマ画像が複数回使用されるタイプのフォトモザイクでもそのまま利用可能です。 コマ画像が複数回使用されるタイプのフォトモザイクでも試してみましょう。



 コマ画像と背景画像は先程と同じにして、フォトモザイク設定を下図のようにします。



 変更点はコマ画像選抜方法です。「最適画像を選抜する」としました。



 フォトモザイクを作成しました。今選択されているコマ画像は27回使用されています。 ファイル名を覚えておきましょう。「resize_IMG_7981.jpg」です。



 エクセルのファイルを編集します。図形の書式設定から塗りつぶし(図またはテクスチャ)とし、画像ソース「挿入する」ボタンからフォトモザイク画像を今作ったものに変更します。



 「検索ファイル名」シートのA1セルに二つ上の画像で覚えておいたコマ画像のファイル名を入力します。「resize_IMG_7981.jpg」です。 デジカメまとめてフォトモザイクのコマ画像リストの表示から、このコマ画像が27回使われていることは分かるのですが、どこに使われているのかが分かりません。 今回それを表示するマクロを作ったのです。



 マクロを実行します。



 できました。指定したコマ画像がどこに使われているのかが視覚的に分かるようになりました。



 コマ画像の位置を表示する機能は十分使えると思いますが、ワークシートの表示の切り替えを手動で行わねばならず、使い勝手はよくありません。まだまだ改良の余地が有ると思いますので、もっと良いものを皆様の方で開発してみてください。


2020年3月5日







ホームへ戻る