• ベストアンサー

写真ファイルの更新日を、撮影日の日付に自動的に書き換えたい

フォルダを手動で選択し(ここまではできます)、その中にあるJPEG写真ファイルの更新日の日付、時刻を、撮影日の日付、時刻に自動的に書き換えたいのですが、VBでどんな記述をすればよいのでしょうか。日付と時刻データはDCFなのでヘッダーあたりに入っていると思われますが。その部分がどこにあって、その撮影日の日付、時刻を取り出すのが特にわかりません。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

取得だけであれば、以下で可能です。 サンプルは Microsoft Scripting Runtime Microsoft Shell Controls And Automation を参照設定すると、Object型ではない宣言が可能です。 Private Const DEF_FILE_NAME As String = "C:\test\サンプル.jpg" Sub Main()   Dim l_fsoObj  As Object 'As Scripting.FileSystemObject   Dim l_fsoFile  As Object 'As Scripting.File      Set l_fsoObj = CreateObject("Scripting.FileSystemObject")   Set l_fsoFile = l_fsoObj.GetFile(DEF_FILE_NAME)   Call DebugFileInfo(l_fsoFile.ParentFolder.Path, l_fsoFile.Name) End Sub Private Sub DebugFileInfo(ByVal p_strFolder As String, ByVal p_strFile As String)   Dim objShell  As Object 'As Shell   Dim objDir   As Object 'As Shell32.Folder   Dim objItm   As Object 'As Shell32.FolderItem   Dim i      As Integer      If Not (Right(p_strFolder, 1) = "\") Then     p_strFolder = p_strFolder & "\"   End If   Set objShell = CreateObject("Shell.Application")   Set objDir = objShell.NameSpace(CStr(p_strFolder))   Set objItm = objDir.ParseName(p_strFile)   Dim l_strTitle As String   Dim l_strValue As String   For i = 0 To 39     l_strTitle = objDir.GetDetailsOf(Nothing, i)     l_strValue = objDir.GetDetailsOf(objItm, i)          Debug.Print i & ":" & l_strTitle & "="; l_strValue   Next i End Sub

greenhope
質問者

お礼

回答、ありがとうございました。おかげでDCFの日付データの位置はわかりました。そうなると、ファイルの一部を読み書きすればできそうです。その件で新たに質問を投稿しましたので、おわかりでしたら回答をお願いします。

その他の回答 (1)

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.2

読むだけだったら、 http://www.vbaccelerator.com/home/vb/code/vbMedia/Using_GDI_Plus/Reading_EXIF_and_Other_Image_Properties/article.asp 書くことについては、しばらく悩んだことがありますが、 私は、その類のソフトを使うか、どうしてもVBでということならOCXなどを購入したほうが良い、という結論に達しました。(挫折しました) http://msdn.microsoft.com/en-us/library/ms533832(VS.85).aspx http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.html http://www.spaz.com/mr/work/aspexiffuncs/

greenhope
質問者

お礼

回答、ありがとうございました。おかげでDCFの日付データの位置はわかりました。そうなると、ファイルの一部を書き込めばできそうです。その件で新たに質問を投稿しましたので、おわかりでしたら回答をお願いします。

関連するQ&A

  • エクスプローラが表示する更新日、撮影日はどこに?

    たくさんの方に教えていただき、DCFの写真ファイルの更新日付を撮影日付に変更することを、指定したフォルダ全てに自動実行するプログラムを作成できました。目的は更新日順となるスライドショーを、撮影日順にすることです。ところが、順番を決める日付はDCFデータの撮影日付ではなく、別の所(FAT?)にあるようで、当てが外れてしまいました。ファイルのエクスプローラで表示する更新日、撮影日が保存されている場所はどこにあるのでしょうか?そこを読み書きするには、どうしたらよいのでしょう?ちなみに1ファイルずつ手動で編集するフリーソフトは持っています。フォルダ内の全ファイルを自動で連続して更新日を撮影日に修正するのが目的です。VBくらいできる力では無理でしょうか?よろしくお願いします。

  • Word2016 日付が自動更新されてしまう

    日付の自動更新してないのに、一昨日に書いた文書も今日の日付に変更されていました。「日付と時刻」で自動更新オフになっています。なのに、なんで自動更新されてしまうのでしょうか? それと自動更新されてしまった日付を元の日付に戻すこと出来ますか。 日付は、ショートカットキーで入力していました。

  • JPEGファイルのヘッダーの撮影日の位置は?

    たくさんの方に教えていただき、変数を Dim Byte 宣言、For Next ループ内に Get 文を利用して配列としてJPEGファイルの先頭部分を 読み取る、それを Chr で文字変換して見ることが可能になりました。その文字を見ても、写真データの撮影日付の位置が判明できません。EXIFの規定では撮影日が タグ 9003 HEX、OFFSET 702 に ASC の文字で記録されている、となっていますが、ヘッダーの部分のかなり先まで見ても、撮影に関連する文字(メーカー、各種日付)などや、2010:01:25 という自分の撮影した日付も見えません。9003 HEX はとても大きな数字で変です。OFFSET 702 は HEXでしょうか、十進数でしょうか?日付として読めないのは文字変換が問題でしょうか?ちなみに英数字の text 文章ファイルは文字として正しく読めますので、ヘッダー情報は正しく取り込んでいると思います。 [目的は多くの写真ファイルの更新日を撮影日に自動的に連続置換するためです]

  • エクセルで自動的に日付を出したい

    エクセル2002を使っています。 Aセルに日付、Bセルに時刻を(それぞれ現在のもの、更新なし)入れたいのですが、 コントロール+;  コントロール+:を入れれば入りますが、 そこのセルを選択しただけで、自動的に入るとか・・出来たらいいな~と 思っています。 選択しただけでは無理なら、もう一段階簡単に入る方法は無いでしょうか? 上のほうに現在日付時刻を表示させていますので、そこから自動的に 持ってくることでもいいのです。 初心者が突拍子も無いおかしな事を聞いているかもしれませんが、 よろしくお願いいたします。

  • 写真の更新日時が勝手に翌日に変わる

    デジカメで撮影した写真のファイル(jpeg)があります。 写真はイベント毎にフォルダを作成してそのフォルダに入れています。 例えば、 20180801旅行 20180805プール などです。 最近、気がついたのですが、一部のファイルの更新日時が勝手に翌日の日付になっているのです。必ず翌日です。 例えば、更新日時が「2018/08/01」であったとします。(実際に撮影した日付です) それが、一部のファイルだけ「2018/08/02」になっているのです! しかも時刻まで変わっていて、6時台や7時台になっていたりします。(あり得ない時刻です) さらに調べると、デジカメを縦にして撮影した写真の日付が翌日になっているようです。 添付が実際保存されている状況です。 (IMG_7597.JPG以降のファイルが日付変更されています) 昨日、この現象に気づき、ウィルスチェックをしましたが、問題はありませんでした。 なぜこのような現象が起きるのでしょうか? ご存知の方、教えて下さい。 よろしくお願い致します。

  • デジカメ撮影画像の日付がファイルに二重に表示される

    キャノンのIXY650を使っていますが、撮影した画像のファイルに撮影日付と別に日付として、常時「9時間先の時刻の日付」が表示されます。撮影日付さえあれば実害はないのですが、この画像をスマホに取り込んだ場合撮影日付ではなく、「9時間先のの時刻の日付」順にソートされます。スマホで撮影したの画像は「日付」として撮影日付時刻のみがファイルの存在するので、カメラ取り込みの画像とスマホ撮影の画像が混在する場合順序が前後してしまいます。この「9時間先の日付時刻」は取り込み日付時刻でも更新日付時刻でもなく、常に9時間先の日付です。撮影日付に一致させることはできるのでしょうか?

  • エクセル2003の日付の自動更新の方法

    エクセル2003で、上書き保存したら、自動的に日付の時刻を更新する方法か、関数を教えてください。

  • 撮影日付、時刻でのファイル名変更

    撮影日付、時刻でのファイル名変更 SONY PC350(ヨン様CM)を所有しております。 パソコンはWindows7 動画をパソコンの読み取り保存した後にファイル名を撮影日付、撮影時刻に変更したいのですがその様なソフトはあるでしょうか? 現在はパソコン繋ぐと自動で読み取りAVI形式で保存されます その時に日付はファイル名になるのですが時刻は×です それとAVIだと綺麗じゃないのでMPEGで保存しときたいのですが その様なソフトもあるでしょうか? よろしくお願いします。

  • 撮影日付を後から写真内に入れるソフト

    撮影日付が写真に焼きこまれていない画像ファイルが大量にあり、フォトフレームで表示するにあたって後付けで撮影日付を写真内に入れるWindowsソフトを探しています。 ネット検索をするといくつか有名なものもあるようですが、以下の条件があると選択できるものが見つけられません。何かおすすめのソフトはありませんでしょうか。 ・一括(同一フォルダー内を全部同時に)で実施したい。1枚づつ読み込み&更新はやってられない。 ・Windows 10のサポートもしくは実績があること

  • エクセルシートにファイル改定日を自動的に入れたい

    Excel2000を使用しています。 セルやヘッダーに現在の時刻、日付を入れる方法は分かるのですが、ファイルを改訂した日、および時刻を自動的に入れる方法が分かりません。プロパティを見れば済むこどですが、作成したいドキュメントの都合上、シートに自動的に入力される方が好ましいです。 どなたかご存知ないでしょうか?

専門家に質問してみよう