Как получить информацию EXIF ​​с картинки на листе Excel с помощью VBA

Вопрос:Как получить информацию EXIF, такую ​​как Latitude, Longitude и т.д., из рисунка формы на листе Excel с помощью VBA? И можно ли его получить без извлечения или копирования изображения из рабочего листа или из застрявшей книги Excel? Я могу выполнить итерацию по содержимому zipped folder с помощью следующего кода. Public Sub ReadZip() Dim vZipFileName As

Вопрос:

Как получить информацию EXIF, такую ​​как Latitude, Longitude и т.д., из рисунка формы на листе Excel с помощью VBA? И можно ли его получить без извлечения или копирования изображения из рабочего листа или из застрявшей книги Excel?

Я могу выполнить итерацию по содержимому zipped folder с помощью следующего кода.

Public Sub ReadZip() Dim vZipFileName As Variant vZipFileName = «C:UserserogrouDesktopTest.zip» Dim objShell, objFolder Set objShell = CreateObject(«shell.application») Set objFolder = objShell.Namespace(vZipFileName) Dim vFilename As Variant If (Not objFolder Is Nothing) Then Debug.Print objFolder.self.Path For Each vFilename In objFolder.items Debug.Print vFilename Next End If Set objFolder = Nothing Set objShell = Nothing End Sub Лучший ответ:

К счастью для вас есть красивая часть кодирования Эндрю Филлипса из North North Catchment Management Authority из Австралии, которая делает именно это.

Он предоставляется как модуль класса, поэтому я не искал переименования этого здесь.

Текущий код можно импортировать из Access в Excel, в моем случае мне нужно было изменить функции от 32 до 64 бит следующим образом:

Частная декларация Функция VirtualAlloc Lib “kernel32” (ByVal Address As Long, ByVal Size As Long, ByVal AllocationType As Long, ByVal Protect As Long) As Long

используя PntSafe

Частная декларация функции PtrSafe VirtualAlloc Lib “kernel32” (ByVal Address As Long, ByVal Size As Long, ByVal AllocationType As Long, ByVal Protect As Long) As Long

Ответ №1

Представленные изображения в Excel обычно встроены в расширенный метафайл (EMF). Вам нужно скопировать метафайл в буфер обмена как EMF, затем перечислить записи EMF и извлечь JPG, а затем проанализировать данные EXIF ​​из информации JPG.

В качестве альтернативы, если файл Excel сохраняется и находится в формате XLSX/XLSM, вы можете извлечь JPG из сжатого контейнера XLSX/XLSM и затем проанализировать это изображение для данных EXIF.

Ни один подход тривиально реализовать, и в обоих случаях было бы проще с .NET.

Оцените статью
Добавить комментарий