2017-04-12 11 views
4

VBAを使用したExcelワークシートの図形から緯度、経度などのEXIF情報を取得するにはどうすればよいですか?また、ワークシートから、または圧縮されたExcelワークブックから画像を抽出またはコピーせずに取得できますか?VBAを使用してExcelワークシートのEXIF情報を取得する方法

次のコードを使用して、圧縮されたフォルダの内容を繰り返し処理できます。

Public Sub ReadZip() 
    Dim vZipFileName As Variant 
    vZipFileName = "C:\Users\erogrou\Desktop\Test.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 

答えて

3

幸運なことに、あなたには幸いなことに、正確にこれを行うオーストラリアのNorth Central Catchment Management AuthorityからのAndrew Phillipsによる美しい作品of codingがあります。

私は再リストに見ていないこのここ

現在のコードは、私の場合、私は32から機能を変更するために必要な、Excelへのアクセスからインポートすることができますので、それがクラスモジュールとして提供されように64ビット:これに

限り

プライベート宣言機能VirtualAllocのLibの "kernel32の"(ロングとしてByVal住所、ロング、ロングとしてByVal AllocationTypeとしてByValサイズ、限り保護BYVAL)を使用して

プライベート宣言PtrSafe機能VirtualAllocのLibの "kernel32の" あなたの迅速な対応のための

+0

この紹介と、64ビットのExcel実装への洞察をお寄せいただきありがとうございます。 exif情報はソリューションの大きな部分であり、私は間違いなくこれを追求しています。私の質問の他の部分については。一時的な作業場所にファイルを最初にエクスポートせずに、ZIPファイルの内容を読み取り、編集、保存することはできますか?私は、ファイルが圧縮されているので、これは不可能であると推測しています。それは、Windowsのように動作することさえできないようです。単純なテキストファイルであっても、一時的な場所で開かれ、開かれた圧縮された場所に直接保存することはできません。 – RRR

2

Excelのレンダリングされた画像は、通常、拡張メタファイル(EMF)内に埋め込まれています。メタファイルをEMFとしてクリップボードにコピーし、EMFのレコードを列挙してJPGを抽出し、次にJPG情報からEXIFデータを解析する必要があります。

また、Excelファイルが保存され、XLSX/XLSM形式である場合は、圧縮されたXLSX/XLSMコンテナからJPGを抽出し、そのイメージをEXIFデータ用に解析できます。

いずれの方法も実装するのは簡単ではなく、どちらの場合も.NETで簡単にできます。

+0

おかげ限り(ロング、ロングとしてByValサイズ、ロングとしてByVal AllocationTypeとしてByValアドレスは、限り保護BYVAL)。 Excel VBAは既存のVBAコードを補足しているため、これを使用することに尽力しています。ですから、Excel xlsx/mワークブックでOpenXML形式で保存されていたワークブックを扱うだけであれば、EXIFを使ってJPEG形式で提供されているファイルからEXIF情報を直接読み取ることはできますか?私はまずxlsmワークブックの中のファイルの内容を読むことができる必要があると思いますが、私はいくつかの例を見つけましたが、これらの例はすべてファイルをエクスポートしますが、私はそれらを直接読みたいと思います。ファイルを直接読むことは可能ですか? – RRR

+0

@ brettdjの答えがEXIFデータを抽出するように見えますが、ファイルを抽出してイメージを見つけるためにXMLを読み取る必要があります。 .NETの解凍は比較的簡単ですが、純粋なVBAソリューションでは、Ron de Bruin [例](https://www.rondebruin.nl/win/s7)に似たコードを使用して一時的な場所にファイルを抽出する必要があります/win002.htm)。ファイルが抽出されていても、ファイルの関係、レイアウト、内容を記述する* multiple * xmlファイルを解釈して、どの画像であるかを識別できる必要があります。 – ThunderFrame

+0

'xlsx'ファイル拡張子を' zip'に変更し、ファイルの内容を調べて、実際に必要なEXIFデータがあることを確認してください。 – ThunderFrame

関連する問題