FSOのDateCreatedプロパティで撮影日時の取得はできますか?

このQ&Aのポイント
  • フォルダの中のファイルの撮影日時の一覧を取得したいのですが、FSOのDateCreatedプロパティを使用して日付を取得できますか?
  • サンプルコードを使用して撮影日時を取得することができましたが、これは本当に撮影日時を示しているのでしょうか?画像ファイルの日付を正しく取得する方法を知りたいです。
  • FSOのDateCreatedプロパティを使用することで、フォルダ内のファイルの撮影日時を取得することができます。しかし、実際にそれが撮影日時を示しているのかどうかについて疑問があります。正確な撮影日時を取得する方法を教えてください。
回答を見る
  • ベストアンサー

FSOのDateCreatedプロパティで撮影日時

FSOのDateCreatedプロパティで撮影日時の取得はできますか? フォルダの中のファイルの撮影日時の一覧を取得したいのですが Sub Sample() Dim MyFileName As String Dim MyFolderName As String MyFolderName = "C:\Users\1\Documents\【写真】" MyFileName = Dir(MyFolderName & "\*.*") Do While MyFileName <> "" Debug.Print MyFileName Debug.Print CreateObject("scripting.filesystemobject").GetFile(MyFolderName & "\" & MyFileName).DateCreated MyFileName = Dir() Loop End Sub これで日付は取得できるのですが、この取得した日付は撮影日時を言ってるのでしょうか? 全て画像ファイルで、撮影日時を取得したいのですが正しいのかどうなのかわかりません。

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

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

デジカメの撮影日時などの情報は、ファイルの中のExif情報に含まれています。 掲示されたソースはおそらく、ファイル作成日時を取得するものと思われます。 大抵のデジタルカメラでは、ファイル作成日時=撮影日時ととらえる事も出来るかもしれませんが、このファイル作成日時は、PCへのコピーや編集などで失われる事があります。 (特に元のファイルを残しておいて、編集後に別ファイルに保存した時など) Exif情報は、FSOでは扱えず、直接ファイルを開いて確認する必要があります。 以下のページに具体例がありましたので、ご参考まで。 http://blog.livedoor.jp/hamu1962/archives/50978551.html Exifについては、以下を。 http://ja.wikipedia.org/wiki/Exchangeable_image_file_format

DJIFEYMJMD
質問者

お礼

回答頂きありがとうございました。

関連するQ&A

  • VBA 一つのフォルダの中のフォルダ名とファイル名

    一つのフォルダの中のフォルダ名とファイル名を取得したい場合は ************************************** Sub test() Dim MyFileName As String Dim MyFolderName As String Dim myFSO As Object Dim MyFolder As Scripting.Folder MyFolderName = "C:\" 'フォルダを取得 MyFileName = Dir(MyFolderName & "*.*") Do While MyFileName <> "" Debug.Print MyFileName MyFileName = Dir() Loop 'ファイルを取得 Set myFSO = CreateObject("Scripting.FileSystemObject") With myFSO With .GetFolder(MyFolderName) For Each MyFolder In .SubFolders Debug.Print MyFolder.Name Next End With End With Set myFSO = Nothing End Sub ************************************** の様に ファイル名・フォルダ名をそれぞれループして取得しないとダメでしょうか? もうちょっとスマートなコードはありますか?

  • フォルダの中のファイル数を取得するには vba

    手作業でフォルダのプロパティからファイルの数を確認することはできるのですが VBAで(FSOなど)、該当のフォルダの中に何個ファイルが入ってるかを確認するコードはありますか? Sub test() Dim MyFileName As String Dim MyFolderName As String Dim i As Long MyFolderName = "\○○\icon" MyFileName = Dir(MyFolderName & "\*.*") Do While MyFileName <> "" MyFileName = Dir() i = i + 1 Loop MsgBox i End Sub このようなコードを作ってみたのですが、 画像のように実際に目で確認したファイル数と一致しません。 正しい数が取得できるvbaコードはありますか?

  • FileDateTime

    Dim MyFileName As String Dim MyPath As String Dim NewName As String Dim objFS As FileSystemObject Dim objFol, shellObj, folderObj, MyFolderName, myFile Dim New撮影日時 As String Sub test() MyFileName = "C:\Users\写真" Set objFS = CreateObject("Scripting.FileSystemObject") Set shellObj = CreateObject("Shell.Application") With objFS With .GetFolder(MyFileName) For Each MyFolder In .SubFolders MyPath = MyFileName & "\" & MyFolder.Name & "\" Set objFol = objFS.GetFolder(MyPath) Set folderObj = shellObj.Namespace(MyPath) MyFileName = Dir(MyPath & "*.*") Do While MyFileName <> "" ’ここでエラー New撮影日時 = FileDateTime(MyPath & folderObj.ParseName(MyFileName)) MyFileName = Dir() Loop Next End With End With Set objFS = Nothing End Sub このコードは何が変ですか? 写真フォルダに入っているサブフォルダの写真ファイルの撮影日時を取得したいのですが FileDateTime(MyPath & folderObj.ParseName(MyFileName)) で 実行時エラー_91「オブジェクト変数またはWithブロック変数が設定されていません」 になります。 原因がわかりません。 オフィス2010、アクセスです。

  • Dir 関数で複数条件を指定するには?

    Sub Sample() Dim MyFileName As String Dim MyFolderName As String MyFolderName = "C:\Windows" MyFileName = Dir(MyFolderName & "\*.exe" Or MyFolderName & "\*.dll") Do While MyFileName <> "" Debug.Print MyFileName MyFileName = Dir() Loop End Sub このような感じで、拡張子がexeとdllファイルを書き出すことは無理なのでしょうか? このコードを実行すると、実行時エラー13が発生します。

  • データを書きだす→範囲を指定してピボットテーブル

    「データを書きだす→範囲を指定してピボットテーブルを作成する」 と言う二つのプロシージャーをいっきにやってるのですが、 二つに区切って実行すると問題ないのですが、一気に実行すると実行時エラーが発生します。 ------------------------------------------------------------- Sub tset() Call 全てのファイル名と作成日時を取得する Call ピボテを作成する End Sub Sub ピボテを作成する() ActiveWorkbook.Names.Add Name:="範囲の名前", RefersToR1C1:="=Sheet1!R1C1:INDEX(Sheet1!C2,COUNTA(Sheet1!C1))" ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="範囲の名前"). _ CreatePivotTable TableDestination:="", TableName:="ピボットテーブル", _ DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) End Sub Sub 全てのファイル名と作成日時を取得する() Dim MyRow As Integer Dim MyFileName As String Dim MyFolderName As String Workbooks.Add Cells(1, 1) = "ファイル名" Cells(1, 2) = "作成日時" MyRow = 2 MyFolderName = "C:\Users\Documents" MyFileName = Dir(MyFolderName & "\*.*") Do While MyFileName <> "" Cells(MyRow, 1) = MyFileName Cells(MyRow, 2) = CreateObject("scripting.filesystemobject").GetFile(MyFolderName & "\" & MyFileName).DateCreated MyFileName = Dir() MyRow = MyRow + 1 Loop End Sub ------------------------------------------------------------- このコート度実行すると ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="範囲の名前"). _ で、 実行時エラー 1004 "指定したシートには既に同じ名前のピボットテーブル レポートが存在します" になります。 しかし、Workbooks.Addをやっているので、上記のエラーはありえないはずです。 そしてこの実行時エラーが出た後は、デバッグ→F5で、最後まで問題なく実行されます。 エクセルのバージョンは2003です。2007でも試しましたが同じ結果でした。 エラーを無視以外での対処方法をご教授ください。

  • エクセル以外のファイルサイズを取得するには?

    例えば画像ファイルのサイズを取得しようとしているのですが Sub ファイルサイズ取得() Dim MyFileName As String MyFileName = "D:\My Documents\My Pictures\画像.bmp" Debug.Print FileLen(MyFileName) End Sub これではダメでした。 Sub ファイルサイズ取得() Dim MyFileName As String MyFileName = "D:\My Documents\My Pictures\画像.bmp" Debug.Print CreateObject("scripting.filesystemobject").GetFolder(MyFileName).Size End Sub これもダメでした。フォルダならいけるのですが。 テキストや画像ファイルなどエクセルファイル以外のサイズを取得する方法を教えてくださいませ。 オフィス2003です。

  • Excelでの Dir

    excel VBAにて Dir関数を用いて、フォルダに存在するファイルを つかむのに、下記のスクリプトがあります。(渡辺ひかる氏のサンプル集)。 質問は、このスクリプトで引っ張り出されるファイルの順番です。本を色々調べたのですが、順番は、「不明」とあります。 しかし、現実は、アルファベット順? に並んでいるように思われます。 本当のところは、どうなんでしょう? 「不明」なのか、それとも「順番が成立している」のか? よろしくお願いします。 ---------------------------------------- Option Explicit Sub P_Sample003() Dim myPath As String Dim myFileName As String Dim i As Long myPath = ThisWorkbook.Path & "\" '任意のフォルダ myFileName = Dir(myPath, 0) Do While Len(myFileName) > 0 Debug.Print myPath & myFileName myFileName = Dir() Loop End Sub

  • (VBA) Dir 関数で取得するファイル一覧の順序

    タイトルの通り、下記のサンプルコードを実行して取得するファイル一覧の順序についての質問です。 Public Sub Test1() Dim WSH As Object Dim MyPath As String Dim MyFileName As String Set WSH = CreateObject("WScript.Shell") MyPath = WSH.SpecialFolders("MyDocuments") MyFileName = Dir(MyPath & "\" & "*.*") Do Until MyFileName = "" MsgBox MyFileName MyFileName = Dir Loop Set WSH = Nothing End Sub (質問) ファイル名の昇順では取得できないようですが、もしファイル名の昇順に並べ替えるとしたら、 どのように処理したらよいのでしょうか?

  • ADOでAccessファイルに接続して、ファイルの

    ADOでAccessファイルに接続して、ファイルの更新日時を取得するには? access2003です、 Private Sub 更新日時を取得() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim MyFileName As String MyFileName = "D:\My Documents\システム.mdb" cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & MyFileName 'ここで更新日時を取得 rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub この状態で、更新日時を取得するにはどうすればいいでしょう? ご教授よろしくお願いします。

  • VBA DateLastModifiedプロパ

    DateLastModifiedプロパティは撮影日時と言う意味にもなりますか? https://msdn.microsoft.com/ja-jp/library/cc428100.aspx を見る限りでは撮影日時ではないのですが Sub 撮影日時を取得する() Dim objFol, shellObj, folderObj, myFile Dim objFS As FileSystemObject Set objFS = CreateObject("Scripting.FileSystemObject") Set shellObj = CreateObject("Shell.Application") MyFolderName = "C:\Users4\Desktop\natsumi\test" Set objFol = objFS.GetFolder(MyFolderName) Set folderObj = shellObj.Namespace(MyFolderName) For Each myFile In objFol.Files Debug.Print myFile.Name & "/" & myFile.DateLastModified Next Set objFS = Nothing Set objFS = Nothing Set objFol = Nothing Set shellObj = Nothing Set folderObj = Nothing End Sub を実行すると撮影日時ががDateLastModifiedと一致するのですが これは偶然ですか?

専門家に質問してみよう