Sub ShowFileInfo(filespec)
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(filespec)
s = "Created: " & f.DateCreated
MsgBox s
End Sub
Sub ShowFileInfo(filespec)
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(filespec)
s = "Created: " & f.DateCreated
MsgBox s
End Sub
Không phải anh ơi View attachment 238928
Em lấy ngày Date Taken chứ không phải lấy ngày Date Created
Và em cần lấy cái thông tin GPS nữa ah....
Cám ơn anh nhiều!
Cám ơn Bác nhiều...
mình đã list down ra hết các thông tin trên file có dc, và Date Taken có nhưng thông tin GPS thì không thấy đâu cả, có gì bác xem giúp
Không biết chắc cái này không lấy dc thông tin GPS quá!!! hichic
Guided by Jzz and David on another post, I discovered a VBA userform and modules that can be imported to Access DB or Excel that will ask you to select a file and it will display the EXIF external ...
Cám ơn Bác nhiều...
mình đã list down ra hết các thông tin trên file có dc, và Date Taken có nhưng thông tin GPS thì không thấy đâu cả, có gì bác xem giúp
Không biết chắc cái này không lấy dc thông tin GPS quá!!! hichic
Muốn thông tin khác thì bạn tự nghiên cứu tiếp nhé.
Mã:
Private Type ImgInfo
Latitude As Double
Longitude As Double
End Type
Function GetImgLocation(ByVal sFilePath As String) As ImgInfo
Dim aLat As Variant, aLng As Variant
Dim Lat As Double, Lng As Double
On Error Resume Next
With CreateObject("WIA.ImageFile")
.LoadFile sFilePath
aLat = .Properties("GpsLatitude")
aLng = .Properties("GpsLongitude")
If Not IsEmpty(aLat) Then
Lat = (aLat(1) + aLat(2) / 60 + aLat(3) / 3600)
If .Properties("GpsLatitudeRef") = "S" Then Lat = -Lat
GetImgLocation.Latitude = Lat
End If
If Not IsEmpty(aLng) Then
Lng = (aLng(1) + aLng(2) / 60 + aLng(3) / 3600)
If .Properties("GpsLongitudeRef") = "W" Then Lng = -Lng
GetImgLocation.Longitude = Lng
End If
End With
End Function
Sub Test()
Dim Img As ImgInfo
Img = GetImgLocation(ThisWorkbook.Path & "\" & "IMG_1496.JPG")
MsgBox Img.Latitude & vbNewLine & Img.Longitude
End Sub
Muốn thông tin khác thì bạn tự nghiên cứu tiếp nhé.
Mã:
Private Type ImgInfo
Latitude As Double
Longitude As Double
End Type
Function GetImgLocation(ByVal sFilePath As String) As ImgInfo
Dim aLat As Variant, aLng As Variant
Dim Lat As Double, Lng As Double
On Error Resume Next
With CreateObject("WIA.ImageFile")
.LoadFile sFilePath
aLat = .Properties("GpsLatitude")
aLng = .Properties("GpsLongitude")
If Not IsEmpty(aLat) Then
Lat = (aLat(1) + aLat(2) / 60 + aLat(3) / 3600)
If .Properties("GpsLatitudeRef") = "S" Then Lat = -Lat
GetImgLocation.Latitude = Lat
End If
If Not IsEmpty(aLng) Then
Lng = (aLng(1) + aLng(2) / 60 + aLng(3) / 3600)
If .Properties("GpsLongitudeRef") = "W" Then Lng = -Lng
GetImgLocation.Longitude = Lng
End If
End With
End Function
Sub Test()
Dim Img As ImgInfo
Img = GetImgLocation(ThisWorkbook.Path & "\" & "IMG_1496.JPG")
MsgBox Img.Latitude & vbNewLine & Img.Longitude
End Sub
Guided by Jzz and David on another post, I discovered a VBA userform and modules that can be imported to Access DB or Excel that will ask you to select a file and it will display the EXIF external ...
Muốn thông tin khác thì bạn tự nghiên cứu tiếp nhé.
Mã:
Private Type ImgInfo
Latitude As Double
Longitude As Double
End Type
Function GetImgLocation(ByVal sFilePath As String) As ImgInfo
Dim aLat As Variant, aLng As Variant
Dim Lat As Double, Lng As Double
On Error Resume Next
With CreateObject("WIA.ImageFile")
.LoadFile sFilePath
aLat = .Properties("GpsLatitude")
aLng = .Properties("GpsLongitude")
If Not IsEmpty(aLat) Then
Lat = (aLat(1) + aLat(2) / 60 + aLat(3) / 3600)
If .Properties("GpsLatitudeRef") = "S" Then Lat = -Lat
GetImgLocation.Latitude = Lat
End If
If Not IsEmpty(aLng) Then
Lng = (aLng(1) + aLng(2) / 60 + aLng(3) / 3600)
If .Properties("GpsLongitudeRef") = "W" Then Lng = -Lng
GetImgLocation.Longitude = Lng
End If
End With
End Function
Sub Test()
Dim Img As ImgInfo
Img = GetImgLocation(ThisWorkbook.Path & "\" & "IMG_1496.JPG")
MsgBox Img.Latitude & vbNewLine & Img.Longitude
End Sub
Function FileDetail(ByVal FilePath As String, ByVal index As Long)
On Error Resume Next
Dim fldName As String, fleName As String
With CreateObject("Scripting.FileSystemObject")
fldName = .GetFile(FilePath).ParentFolder.Path
fleName = .GetFile(FilePath).Name
End With
With CreateObject("Shell.Application")
With .Namespace("" & fldName & "")
FileDetail = .Getdetailsof(.ParseName("" & fleName & ""), index)
End With
End With
End Function
Cũng làm được nhiều chuyện lắm nha. Với trường hợp của bạn ta áp dụng:
Mã:
=FileDetail(đường dẫn đến file, 12)
Con số 12 trong công thức là ý muốn nói đến cái "Date taken". Có thể thí nghiệm thay index từ 0 đến 320 xem nó ra cái gì. Hoặc muốn nghiên cứu xem từng index mang ý nghĩa cụ thể nào thì có thể chạy code này:
Mã:
Private Sub AllDetails()
Dim n As Long
With CreateObject("Shell.Application").Namespace("C:\")
For n = 0 To 320
ActiveSheet.Cells(n + 2, 1) = n
ActiveSheet.Cells(n + 2, 2) = .Getdetailsof(.Items, n)
Next
End With
End Sub
Đại khái vậy! Hy vọng có thể giúp ích được cho bạn
Function FileDetail(ByVal FilePath As String, ByVal index As Long)
On Error Resume Next
Dim fldName As String, fleName As String
With CreateObject("Scripting.FileSystemObject")
fldName = .GetFile(FilePath).ParentFolder.Path
fleName = .GetFile(FilePath).Name
End With
With CreateObject("Shell.Application")
With .Namespace("" & fldName & "")
FileDetail = .Getdetailsof(.ParseName("" & fleName & ""), index)
End With
End With
End Function
Cũng làm được nhiều chuyện lắm nha. Với trường hợp của bạn ta áp dụng:
Mã:
=FileDetail(đường dẫn đến file, 12)
Con số 12 trong công thức là ý muốn nói đến cái "Date taken". Có thể thí nghiệm thay index từ 0 đến 320 xem nó ra cái gì. Hoặc muốn nghiên cứu xem từng index mang ý nghĩa cụ thể nào thì có thể chạy code này:
Mã:
Private Sub AllDetails()
Dim n As Long
With CreateObject("Shell.Application").Namespace("C:\")
For n = 0 To 320
ActiveSheet.Cells(n + 2, 1) = n
ActiveSheet.Cells(n + 2, 2) = .Getdetailsof(.Items, n)
Next
End With
End Sub
Đại khái vậy! Hy vọng có thể giúp ích được cho bạn
Dạ Cám ơn Thầy nhiều...
Em đã làm dc rùi.
Gộp lại tấ cả bài giúp đỡ của thầy @ndu96081631 , @huuthang_bd , @ongke0711 , @tigertiger , @HeSanbi em đã hoàn thành.
Xin trân trọng cám ơn sự giúp đỡ nhiệt tình của mọi người .
Function FileDetail(ByVal FilePath As String, ByVal index As Long)
On Error Resume Next
Dim fldName As String, fleName As String
With CreateObject("Scripting.FileSystemObject")
fldName = .GetFile(FilePath).ParentFolder.Path
fleName = .GetFile(FilePath).Name
End With
With CreateObject("Shell.Application")
With .Namespace("" & fldName & "")
FileDetail = .Getdetailsof(.ParseName("" & fleName & ""), index)
End With
End With
End Function
Cũng làm được nhiều chuyện lắm nha. Với trường hợp của bạn ta áp dụng:
Mã:
=FileDetail(đường dẫn đến file, 12)
Con số 12 trong công thức là ý muốn nói đến cái "Date taken". Có thể thí nghiệm thay index từ 0 đến 320 xem nó ra cái gì. Hoặc muốn nghiên cứu xem từng index mang ý nghĩa cụ thể nào thì có thể chạy code này:
Mã:
Private Sub AllDetails()
Dim n As Long
With CreateObject("Shell.Application").Namespace("C:\")
For n = 0 To 320
ActiveSheet.Cells(n + 2, 1) = n
ActiveSheet.Cells(n + 2, 2) = .Getdetailsof(.Items, n)
Next
End With
End Sub
Đại khái vậy! Hy vọng có thể giúp ích được cho bạn
Thầy @ndu96081631 ơi,
khi em dùng strResult=.Getdetailsof(.ParseName("" & fleName & ""), 12) thì nó cho kết quả ghi lên cell là "06-08-2020 10:53 AM"
nhưng khi em msgbox ra thì nó là như thế này
có mấy dấu "?" kỳ bí
và em dùng CDate(strResult) thì báo lỗi "Type Mismatch"...
Em làm đủ mọi cách mà không được ah....
Thầy giúp em với...
Thầy @ndu96081631 ơi,
khi em dùng strResult=.Getdetailsof(.ParseName("" & fleName & ""), 12) thì nó cho kết quả ghi lên cell là "06-08-2020 10:53 AM"
nhưng khi em msgbox ra thì nó là như thế này View attachment 239134
có mấy dấu "?" kỳ bí
và em dùng CDate(strResult) thì báo lỗi "Type Mismatch"...
Em làm đủ mọi cách mà không được ah....
Thầy giúp em với...