Schon mal danke für Eure Tipps!
Joachim
'############## GPS #################
Function GPS_Loc(Fl As String) As String ' Übergabe eines Pfad & Dateinamens
Dim Img ' as Imagefile
Dim GPS(4) As String
Set Img = CreateObject("WIA.ImageFile")
Call Img.LoadFile(Fl)
If Img.Properties.Exists("1") Then GPS(0) = Img.Properties("1").Value 'N
If GPS(0) = "" Then GPS_Loc = "nv": Exit Function
If Img.Properties.Exists("2") Then
For i = 1 To Img.Properties("2").Value.Count
If Err.Number 0 Then GPS_Loc = "error": Err.Clear: Exit Function
GPS(1) = GPS(1) & Img.Properties("2").Value.Item(i) & Choose(i, "° ", "' ", "")
Next i
End If
If Img.Properties.Exists("3") Then GPS(2) = Img.Properties("3").Value 'W/E
If Img.Properties.Exists("4") Then
For i = 1 To Img.Properties("4").Value.Count
GPS(3) = GPS(3) & Img.Properties("4").Value.Item(i) & Choose(i, "° ", "' ", "")
Next i
End If
If Img.Properties.Exists("6") Then GPS(4) = Img.Properties("6").Value
If Len(GPS(1)) > 5 Then
GPS_Loc = GPS(0) & GPS(1) & ", " & GPS(2) & GPS(3) & ", Höhe: " & Format(GPS(4), "0.00 _
m")
Else
GPS_Loc = "nv"
End If
ERASE GPS
'einzelne Fotos, alle Propeties
'andere Methoden: p.value.Numerator, p.value.Denumerator
'if p.type = RationalImagePropertyType Then s = s & p.Value.Numerator & "/" & p.Value. _
Denominator
'if p.Type = StringImagePropertyType then
'if p.SubType UnspecifiedSubType then
'if p.Value p.SubTypeDefault then
'if p.IsReadOnly then
'select Case p.SubType
' Case FlagSubType
' For i = 1 To p.SubTypeValue.Count
' s = s & p.SubTypeValues(i)
' If i p.SubTypeValues.Count Then s = s & ", "
' Next i
' Case ListSubType
' s = s & " [ valid values include:"
' For i = 1 To p.SubTypeValues.Count
' s = s & p.SubTypeValues(i)
' If i p.SubTypeValues.Count Then
' s = s & ", "
' End If
' Next
' s = s & " ]"
' Case RangeSubType
' s = s & " [ valid values in the range from " & _
' p.SubTypeMin & " to " & p.SubTypeMax & _
" in increments of " & p.SubTypeStep & " ]"
' Case Else 'UnspecifiedSubType
' End Select
' If Img.Properties.Exists("40095") then
' Set v = Img.Properties("40095").Value
' s = s & "Subject = " & v.String & vbCrLf
' End If
'For Each p In Img.Properties
' Debug.Print p.propertyid, p.Name, p.Value, p.isvector
'Next p
'Alternative
'For i = 1 To objImage.Properties.Count
' Debug.Print i, Img.Properties(i).Name, Img.Properties(i).Value
'Next i
'Set v = CreateObject("WIA.Vector")
'v.Add 1
'v.Add 42
'v.Remove 1
'v.add "Text"
'MsgBox v(1)
Set Img = Nothing
End Function
Für wenige Fotos ist der Code ok, für viele dauert er zu lange, da jedesmal "WIA" erneut angelegt wird. Wenn man WIA einmal anlegt und dann eine Schleife über alle Fotos legt, wird es viiiiiiel schneller.Um GPS-Daten aus Bildern auszulesen, kannst Du folgende Schritte befolgen:
Bild auswählen: Stelle sicher, dass das Bild GPS-Daten enthält. Diese Informationen sind meist in den EXIF-Daten gespeichert.
VBA-Editor öffnen: In Excel kannst Du den Visual Basic for Applications (VBA)-Editor öffnen, indem Du Alt + F11 drückst.
Neues Modul erstellen:
VBAProject (DeineArbeitsmappe).Einfügen > Modul.VBA-Code einfügen: Füge den folgenden Code in das Modul ein, um die GPS-Daten auszulesen:
Sub GetFilesDetails()
Dim oFile As Object, i As Integer
Dim sPath As String, sFile As String
sPath = "D:\Pictures\Fotos\2020\"
sFile = "20200206_201737.jpg"
With CreateObject("Shell.Application").Namespace(CVar(sPath))
Set oFile = .ParseName(sFile)
For i = 1 To 50
Debug.Print i, .getdetailsof(oFile, i)
Next i
End With
End Sub
Makro ausführen: Führe das Makro aus, um die GPS-Daten zu erhalten. Die Daten werden im Direktfenster angezeigt.
Daten in Excel importieren: Kopiere die erhaltenen Daten aus dem Direktfenster in ein Arbeitsblatt.
Fehler: GPS-Daten nicht vorhanden: Überprüfe, ob das Bild tatsächlich GPS-Daten enthält. Du kannst dies tun, indem Du mit der rechten Maustaste auf die Bilddatei klickst und die Eigenschaften aufrufst.
Fehler: Das Makro läuft nicht: Stelle sicher, dass Du die richtigen Berechtigungen hast, um Makros auszuführen. Überprüfe auch die Sicherheitseinstellungen in Excel.
Fehler: Daten werden nicht angezeigt: Möglicherweise sind die GPS-Daten in einem anderen Format gespeichert. Versuche, die Bilder in einem anderen Format zu speichern oder überprüfe die EXIF-Daten.
Wenn Du nicht mit VBA arbeiten möchtest, kannst Du folgende Methoden nutzen:
ExifTool: Ein leistungsstarkes Tool, das EXIF-Daten aus Bildern auslesen kann. Es kann die GPS-Daten in eine Textdatei exportieren, die Du in Excel importieren kannst.
Spezielle Apps: Es gibt Apps wie Geosetter oder GeoExif, die GPS-Daten aus Fotos auslesen und exportieren können.
GPS-Daten aus einem JPG-Bild auslesen:
20200206_201737.jpg auszulesen.Daten in Excel importieren:
Automatisierung: Erstelle eine Schleife, die mehrere Bilder in einem Rutsch verarbeitet. Dies spart Zeit, besonders wenn Du viele Bilder hast.
Fehlerbehandlung: Implementiere eine Fehlerbehandlung im VBA-Code, um mit Bildern umzugehen, die keine GPS-Daten enthalten.
Nutzung von Geocaching: Integriere die GPS-Daten in Geocaching-Projekte, indem Du die Koordinaten in eine Geocaching-App überträgst.
1. Wie kann ich GPS-Daten aus vielen Bildern gleichzeitig auslesen?
Du kannst eine Schleife in Deinem VBA-Code einfügen, die durch alle Bilddateien in einem bestimmten Ordner iteriert.
2. Welche Bildformate unterstützen EXIF-Daten?
Die meisten JPG-Dateien enthalten EXIF-Daten, aber auch TIFF- und einige RAW-Formate unterstützen diese Informationen.
3. Kann ich GPS-Daten auch ohne Excel auslesen?
Ja, mit Tools wie ExifTool oder speziellen Apps kannst Du GPS-Daten direkt aus den Bildern auslesen, ohne Excel zu verwenden.