Excel的VBA代码存在问题,该代码从文件夹中的一组文件获取地理位置信息(经度、纬度、海拔)

h7appiyu  于 2023-03-24  发布在  其他
关注(0)|答案(1)|浏览(108)

因此,我为自己的工作编写了这段代码,它从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
w8f9ii69

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,它可以返回一个文件列表。

相关问题