[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『写真のGPS情報をエクセルに表示したい』(neruneru)
エクセルを仕事で使い始めて1年のものです。 通常の操作などは、授業で習ったこともあり一通り出来ます。 今回教えて頂きたいことは、カメラ等で撮影したJPGファイルを、 PCに読み込みし、エクセルに貼り付けした際、別のセルに GPS情報を自動で表記する方法を教えて頂きたく、投稿致しました。 ネットで調べてみたものの、関連する記事を見つけることが出来ませんでした。 宜しければ、ご回答下さいますよう宜しくお願い致します。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
一応VBAでの読み込み事例がいくつかネット上に公開されているので試してみては如何でしょうか。
例
http://www.btinc.jp/vba_labo/study1.html
補足しておくと、
エクセルに貼り付け→VBAで貼り付け済みの写真のパスを取得→EXIF取得の流れは無理なので
VBAでエクセルに写真貼り付け→EXIF取得とする必要があります。
(名無し) 2018/09/28(金) 10:47
ちんたら書いているうちに既に回答がついてますが、その ままアップします。
「EXIF GPS VBA」でネット検索したら参考情報が ヒットするかも。 (カリーニン) 2018/09/28(金) 10:51
VBAだけで頑張るなら、名無しさんが紹介された先のようなコーディングが必要です。しかし、GPS情報部分は対応していないようだったので、そのままでは目的を果たせません。 GPSのタグへの対応を追加コーディングするか、いっそGDI++を使った方が楽かもしれませんが、それでも茨の道です。
別案として、ファイルのプロパティを見ると、GPS情報が表示されますよね? こちらならもっと楽に実現できそうですが、GPS情報自体が複雑なため、素直に取り出せませんでした。 ファイルのExtendedPropertyの内、以下を得られれば表示できそうかな?、とは思うのですが。
System.GPS.LatitudeDenominator 緯度の分母 System.GPS.LatitudeNumerator 緯度の分子 System.GPS.LatitudeRef N:北緯、S:南緯 System.GPS.LongitudeDenominator 経度の分母 System.GPS.LongitudeNumerator 経度の分子 System.GPS.LongitudeRef E:東経、W:西経
緯度、経度って、12.34'56"78 みたいに表現しますよね。 これが分母・分子それぞれ2要素になって格納されているようなのですが、変数代入がうまくできなかったので、私は諦めました。(回答にあまり時間かけたくないもので…)
(???) 2018/09/28(金) 13:56
中には下記のような、かなり完成されたエクセルも公開されていましたが、
私の所有している緯度経度付きJPGからは読み込めませんでしたが一応参考まで。
https://wisteriahill.sakura.ne.jp/CMS/WordPress/2016/09/01/jpg-exif-vba-google-maps/
WIAのPropertiesから取り出すサンプルも多数見つかりましたが、
これも私の環境では読み込めませんでした。
(名無し) 2018/09/28(金) 16:49
これを利用し、GPS座標以外は無視して書いてみたのが以下になります。 緯度、経度は何時何分が良いのか1つにまとめた方が良いのか判らなかったので、時分表記を残してみました。
Sub test() Dim WIA As Object Dim prop As Variant Dim cw As String
Set WIA = CreateObject("Wia.ImageFile") WIA.LoadFile "c:\tmp\test.jpg"
For Each prop In WIA.Properties Select Case prop.PropertyID Case 1 cw = cw & IIf(prop.Value = "N", "北緯", "南緯") Case 2 'cw = cw & prop.Value(1) + prop.Value(2) / 60 + prop.Value(3) / 3600 cw = cw & prop.Value(1) & "." & prop.Value(2) & "'" & Replace(prop.Value(3), ".", """") Case 3 cw = cw & vbLf & IIf(prop.Value = "E", "東経", "西経") Case 4 'cw = cw & prop.Value(1) + prop.Value(2) / 60 + prop.Value(3) / 3600 cw = cw & prop.Value(1) & "." & prop.Value(2) & "'" & Replace(prop.Value(3), ".", """") End Select Next prop
Set WIA = Nothing If cw <> "" Then MsgBox cw, vbInformation Else MsgBox "GPS情報なし", vbCritical End If End Sub
本来なら、まず &H8825& のタグを探すと、これがGPS情報のオフセットなので、TIFFヘッダ位置にこれを足したアドレスを参照。 するとここもタグ情報になっているので、この個数分ループし、GPS関係のタグIDと一致したなら、データ形式に応じてデータを取り出す、という手間がかかるのですが、WIA使うとすごく簡単になるんですねぇ。
(???) 2018/09/28(金) 18:40
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.