- ベストアンサー
写真ファイルの更新日を、撮影日の日付に自動的に書き換えたい
フォルダを手動で選択し(ここまではできます)、その中にあるJPEG写真ファイルの更新日の日付、時刻を、撮影日の日付、時刻に自動的に書き換えたいのですが、VBでどんな記述をすればよいのでしょうか。日付と時刻データはDCFなのでヘッダーあたりに入っていると思われますが。その部分がどこにあって、その撮影日の日付、時刻を取り出すのが特にわかりません。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
取得だけであれば、以下で可能です。 サンプルは 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
その他の回答 (1)
- ShowMeHow
- ベストアンサー率28% (1424/5027)
読むだけだったら、 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/
お礼
回答、ありがとうございました。おかげでDCFの日付データの位置はわかりました。そうなると、ファイルの一部を書き込めばできそうです。その件で新たに質問を投稿しましたので、おわかりでしたら回答をお願いします。
お礼
回答、ありがとうございました。おかげでDCFの日付データの位置はわかりました。そうなると、ファイルの一部を読み書きすればできそうです。その件で新たに質問を投稿しましたので、おわかりでしたら回答をお願いします。