因此,我为自己的工作编写了这段代码,它从excel文件中直接引用的文件夹中的一组图像文件的属性中获取地理标记信息(所以它可以应用到不同的文件夹)。它应该采取的信息,并粘贴文件名,经度,纬度,和海拔为每个文件在一个新的一行在excel工作表.我现在的问题是,这是一个错误424:Object Required.我不明白代码有什么问题,或者我只是缺少了一些明显的东西。我试过我在Stack和在线上找到的其他代码,但它们也没有按照我需要的方式工作,所以我最终尝试自己使用它们作为参考。
任何帮助都将不胜感激。
下面是我为这个任务准备的完整代码:
Sub ExtractPhotoData()
'Declare variables
Dim FSO As Object
Dim SourceFolder As Object
Dim FileItem As Object
Dim Image As Object
Dim RowCounter As Integer
'Set up the file system object and source folder
Set FSO = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = Worksheets("Sheet2").Cells(2, 9).Value
'Loop through each file in the source folder
For Each FileItem In SourceFolder.Files
'Check if the file is an image
If InStr(1, FileItem.Type, "image") > 0 Then
'Load the image
Set Image = CreateObject("WIA.ImageFile")
Image.LoadFile FileItem.Path
'Extract the longitude, latitude, and altitude data
Dim Longitude As String
Dim Latitude As String
Dim Altitude As String
Longitude = Image.Properties("GPS Longitude").Value
Latitude = Image.Properties("GPS Latitude").Value
Altitude = Image.Properties("GPS Altitude").Value
'Paste the data into the worksheet
RowCounter = RowCounter + 1
Cells(RowCounter, 1).Value = FileItem.Name
Cells(RowCounter, 2).Value = Longitude
Cells(RowCounter, 3).Value = Latitude
Cells(RowCounter, 4).Value = Altitude
End If
Next FileItem
End Sub
1条答案
按热度按时间w8f9ii691#
因为SourceFolder被声明为工作表(set SourceFolder = Work...),它是一个只知道excel工作表的对象。它不处理文件。所以我们需要在FSO上循环,而不是SourceFolder。所以在循环中更改为FSO,但是当你这样做时,我认为它需要初始化来指定从哪个目录开始。
我不认为FileSystemObject可以做你想要的(文件列表),所以你可以看看https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/folder-object,它可以返回一个文件列表。