【发布时间】:2018-09-08 15:25:18
【问题描述】:
我正在进行的项目从 MySQL 数据库中的 blob 导入图像。有时这些图像会旋转 90 度,用户需要手动将它们旋转到正确的方向。
所以我的问题是,有人知道使用 vba 从 Excel 中的形状中提取 exif 数据的函数吗?我试图避免任何第三方应用程序这样做。
【问题讨论】:
我正在进行的项目从 MySQL 数据库中的 blob 导入图像。有时这些图像会旋转 90 度,用户需要手动将它们旋转到正确的方向。
所以我的问题是,有人知道使用 vba 从 Excel 中的形状中提取 exif 数据的函数吗?我试图避免任何第三方应用程序这样做。
【问题讨论】:
我最终在 social.msdn.microsoft.com 的内部发现了一些东西。
这里是解决方案。需要 Microsoft Shell 控件和自动化参考。归功于 social.msdn.microsoft.com 上的 OssieMac。 Link to page of post
将它指向一个形状似乎不起作用(给我一个错误),但我还是将我的 mysql blob 保存到 pc 上的一个临时文件中,所以无论如何这对我有用。
Sub ListMetadata()
Dim fileFolder As String
Dim fileName As String
Dim objShell As Shell32.Shell
Dim objFolder As Shell32.Folder
Dim objItem As Shell32.FolderItem
Dim i As Long
'Edit following line to your path. (Note NO back slash on end.)
fileFolder = ThisWorkbook.Path & "\Picture Test"
'Can insert path like following if you prefer.
'fileFolder = "C:\Users\OssieMac\Documents\Excel\Test Macros\Picture Test"
'Edit following line to your file name
fileName = "DSC00093.JPG"
Set objShell = New Shell
Set objFolder = objShell.Namespace(fileFolder)
Set objItem = objFolder.ParseName(fileName)
With objFolder
For i = 1 To 1000
Sheets("Sheet1").Cells(i, "A") = .GetDetailsOf(objItem.Name, i)
Sheets("Sheet1").Cells(i, "B") = .GetDetailsOf(objItem, i)
Next i
End With
Set objItem = Nothing
Set objFolder = Nothing
Set objShell = Nothing
End Sub
【讨论】: