はじめに
以前画像に文字を埋め込むVBAマクロを公開したが目的は野鳥写真にExif情報を埋め込もうと思ったからだった。
実際に埋め込んでみたらオリジナルの写真を流用するのに少し不便さを感じてしまった。
そこで、Exif情報のみを埋め込んだ画像とオリジナル画像を合体させ別名で保存することを考えた。
処理の流れ

(1)野鳥の画像からExif情報を取得
その6で記した「 画像ファイルの幅、高さ、Exif情報を取得するマクロ」で実現。
(2)予め用意した黒の画像にExif情報を埋め込む
今回新規に作成。
(3)野鳥の画像とExif情報を埋め込んだ画像を並べて1つの画像に結合し別名で保存
今回新規に作成。
ここで問題が発生。
・問題その1発生!
Excelに取り込んだ野鳥の画像が元画像よりも小さい。
原因はOfficeが内部で管理しているのは1 inch = 72 pointという長さの基準にしてしまうから。これに対してWindowsの長さ基準が1 inch = 96 pixel。画像サイズ(pixel)をExcel に同じ物理サイズで貼るには横サイズ ×72 / 96、縦サイズ ×72 / 96に変換してやれば良い。
・問題その2発生!
Excel VBAから画像を保存するには通常PowerPoint経由で保存か、一時的にChartに貼り付けて保存で出来るが、32bitのExcel2000と64bitのWindows11ではうまく動作せずExif情報を貼り付けた文字が欠落したり、2重の白枠が付加してしまったりした。
直接Excelからの保存は諦め、画像をCopyし、新規に起動した「ペイント」に貼り付けて「名前を付けて保存」で保存しようと試みた。
・問題その3発生!
これまで通りkeybd_event関数を使用して画像を「ペイント」にPasteして「名前を付けて保存」ダイアログの表示までは出来たがファイル名を設定して保存ボタンを押下するキー操作が不可能である事が判明した。
「名前を付けて保存」はPaint.exe のウィンドウではなく「 共通ファイルダイアログ(別プロセス)」のIFileDialog 系なのでkeybd_eventでは操作できないとの事。
AIに相談して「名前を付けて保存」ダイアログの操作は別の手段を用いることにした。
AIにソースコードを提示してもらい何度も何度も試行錯誤を繰り返しようやく問題を解消。
Excel VBAからAutoHotkeyというWindows専用のキー操作スクリプト言語プラットフォームのソースコードを呼び出して「名前を付けて保存」ダイアログを操作し解決した。
(4)保存した結合画像をアメブロに公開
手動で実施。
動作状況
動作の画面キャプチャを以下に示す。
(1)これまでの画面操作系のマクロブックに「ペイントExif結合」ボタンを新規追加。一覧から該当ファイルを選択した状態でボタン押下で処理開始。

(2)Excel上に野鳥の画像と予め用意した黒の画像を横並びにして黒の画像にはExif情報を貼り付けておく。2つの画像は結合してCopy。

(3)マクロはkeybd_event関数を使用して「ペイント」に画像をPaste。

(4)マクロは「名前を付けて保存」ダイアログを表示。

(5)マクロはAutoHotkeyのソースコードを呼び出し、ファイル名を設定し保存ボタンを押下。

(6)マクロは「ペイント」を終了し、Excel上の画像を削除して終了。

AIはChatGPTを使用したが本当に驚かされた。ソースコードの生成はもちろんのこと、エラーなどのトラブルシューティングなどの回答はほぼ正確だった。
その都度新しいソースコードを瞬時に提示し、解消されなければ別の方法を提示する。その際にはどうしてそうなるのかどうすればよいのかを詳細に説明する。時には解決策を提示するがあなたの環境では不安定でお勧めしないとかアドバイスもする。
今回、自分のExcelのバージョンが古いこともあってWindows11との相性が悪くだいぶイレギュラーな状況だったと思う。
問題解決できたのはAIの力が大きい。
IT業界を離れて久しいが今の現場は相当AIを利用しているのだろう。
~Windows標準ソフト「フォト」シリーズ~
その1 お気に入りでフィルタ
その2 新機能が凄い
その3 鮮明度自動設定VBAマクロ
その4 拡大率自動設定VBAマクロ
その5 ペイント操作マクロ(Windows10版)
その6 画像ファイルの幅、高さ、Exif情報を取得するマクロ
その7 keybd_event関数に渡すキー値を汎用化するマクロ
その8 画像ファイルに文字を埋め込むマクロ
その9 画像を傾ける方法(水平・垂直の調整)
その10 ペイント操作マクロ(Windows11版)
その11 画像ファイルのExif情報(MakerNote)を取得するマクロ
その12 2つの画像を結合するマクロ ←本サイト