電子書籍の厳選無料作品が豊富!

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

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/01/26 07:38

読むだけだったら、


http://www.vbaccelerator.com/home/vb/code/vbMedi …

書くことについては、しばらく悩んだことがありますが、
私は、その類のソフトを使うか、どうしてもVBでということならOCXなどを購入したほうが良い、という結論に達しました。(挫折しました)

http://msdn.microsoft.com/en-us/library/ms533832 …
http://www.kodak.com/global/plugins/acrobat/en/s …
http://www.sno.phy.queensu.ca/~phil/exiftool/Tag …
http://www.spaz.com/mr/work/aspexiffuncs/
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/01/26 07:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報