• 締切済み

EXIF情報を出力するマクロ

JPEG画像のEXIF情報を読み取って、撮影日時を出力するプログラムを作りたいのですが http://www.btinc.jp/vba_labo/study1.html このページに書かれたものを実行しようとすると Set objJpeg = New JpegExif のところで、 ユーザー定義型は定義されていません と言われて実行することができません。 http://blog.livedoor.jp/hamu1962/archives/51375817.html このページに書かれたものを実行しようとすると Set objFolItem = objFol.ParseName(tarFile) のところで、 オブジェクト変数またはWithブロック変数が設定されていません。 と言われて実行することができません。 どうすればうまくいきますでしょうか? それと、上記二つの方法はどちらの方がお勧めでしょうか?

みんなの回答

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.2

> できれば、後半の方も教えていただけないでしょうか? 自分のトコだと動作してるみたいです。 強いて言うなら、 folPathの宣言はVariant型でないと、Namespace関数が受け取らないみたい。 1) Dim folPath As String   ↓ Dim folPath As Variant そうすれば、Namespace関数に渡せるみたい。 2) Set objFol = objShell.Namespace("~")   ↓ Set objFol = objShell.Namespace(folPath) と、folpathに入るフォルダ名の「\」は重ねずに、末尾にも付けない。 マイドキュメントなんかの仮想フォルダは指定不可。 3) folPath = "C:\hoge\hoge" とか? 後は参考URLのソースをインデントや改行位置修正しただけです。 -- > irfanviewでEXIF情報を保持したまま > 再圧縮をかけたものは ちょっと、どういう操作なのか分かりません。 適当なExif情報持ったファイルが手元に無いですが、普通の画像で名前を付けて保存で圧縮率変えたものは、ファイルサイズは取得できました。 > なぜかうまくいかないのですがなぜでしょうか? よくよく試すと、動作はするけどタイトルのみ出力され、ファイルの情報が出力されていませんでした。 見てみると、JpegExifオブジェクトに最初にファイル名渡す際に、フルパスが渡っていませんでした。 たまたま画像とExcelファイルをカレントフォルダで実行していたとかなら動作していたとか。 質問者さんの環境で、再圧縮したファイルが別のフォルダに出力されてるとかなら、タイトルのみで何も出力されないかも。 If objJpeg.InitSet(fileName) >= 0 Then   ↓ If objJpeg.InitSet(tFolder & fileName) >= 0 Then だと、どうでしょう?

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

前半だけ、 > ユーザー定義型は定義されていません > と言われて実行することができません。 クラスが適切な名前で登録されていないからだと思います。 手順だと、 1) Alt+F11でVBA起動。 2) 左のプロジェクトエクスプローラ、VBAProject(ブック名.xlsm)を右クリック、挿入、クラスモジュール   「Class1」クラスが挿入される。 3) Class1を左クリック、メニューの表示、プロパティウィンドウ(F4) 4) プロパティ - Class1のプロパティウィンドウで、(オブジェクト名)の「Class1」を「JpegExif」に変更。 5) 参考URLの後半、「JpegExifクラス」をJpegExifクラスのウィンドウに貼り付け。 以上でクラスの登録終了。 6) VBAProject(ブック名.xlsm)を右クリック、挿入、標準モジュール   「Module1」が挿入される。 7) 参考URLの「JPEGファイルリスト作成」を貼り付け。 後は、エラーが出せてるなら実行できるハズ。

MOUIIKAO
質問者

お礼

ありがとうございます。 うまくいきました。 できれば、後半の方も教えていただけないでしょうか?  

MOUIIKAO
質問者

補足

すいません、前半の方法で デジカメで撮影したものを読み込ませるとうまくいくのですが irfanviewでEXIF情報を保持したまま 再圧縮をかけたものはなぜかうまくいかないのですがなぜでしょうか? Irfanview上では正常にEXIF情報は読み出せているのですが・・・

関連するQ&A