从VBA获取财产日期/时间

时间:2014-04-04 11:22:01

标签: excel vba excel-vba

我有以下代码用于获取某些jpg文件的日期属性。我想要它,所以我可以从中提取day() month()year()。它大部分时间都有效,但偶尔会有一些流氓?。我试过getproperty1 = Replace(getproperty1, "?", "")然而这不起作用(并没有真正期待它)

intPos = InStrRev(strFile, "\")
strPath = Left(strFile, intPos)
strName = Mid(strFile, intPos + 1)
''debug.print intPos & " .. " & strPath & " .. " & strName
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(strPath)
Set objFolderItem = objFolder.ParseName(strName)
If Not objFolderItem Is Nothing Then
getproperty1 = objFolder.GetDetailsOf(objFolderItem, n)
If getproperty1 = vbNullString Then
getproperty1 = objFolder.GetDetailsOf(objFolderItem, 4)
End If

我希望它至少可以作为日期阅读,因为我将把它全部传回一个重复的文件(请参阅Rotate a saved image with vba了解更多关于我用它做什么的想法)使用我从Chip Pearson的网站(http://www.cpearson.com/excel/FileTimes.htm)修改了一些代码,将其写回日期时为Double的文件(因此将在Dateserial()+Timeserial()运行{{1}}有理由阻止我直接在两者之间传递日期时间,因为我有时需要在两位代码之间进行修改。

1 个答案:

答案 0 :(得分:0)

我使用了一个字符条功能来遍历每个单独的字符,消除了任何不是数字的东西,":"或空格,然后通过DateValue()将其作为可识别的日期格式。现在就像魅力一样!

Function stripChars(chrStrp As String)
   stripChars = ""
   For cnt = 1 To Len(chrStrp)
      tmpChar = Mid(chrStrp, cnt, 1)
      If Val(tmpChar) <> 0 Or tmpChar = "0" Or tmpChar = "/" Or tmpChar = " " Or tmpChar = ":" Then
         stripChars = stripChars & tmpChar
      End If
   Next cnt
   Debug.Print stripChars
   stripChars = DateValue(stripChars)
End Function