Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
利用excelvba实现图片文件的尺寸标注_Vba_Excel_Jpeg - Fatal编程技术网

利用excelvba实现图片文件的尺寸标注

利用excelvba实现图片文件的尺寸标注,vba,excel,jpeg,Vba,Excel,Jpeg,我正在尝试获取图片文件的尺寸。所有路径都列在excel列中,希望用文件维度填充另一列。我的尝试出错了 运行时错误“91”:未设置对象变量或带块变量 在线 Set objfile=objfolder.parsename(文件名) 欢迎所有帮助…我是初学者 Private Sub CommandButton1_Click() Dim objShell As Object Dim objFolder As Object Dim objFile As Object Dim

我正在尝试获取图片文件的尺寸。所有路径都列在excel列中,希望用文件维度填充另一列。我的尝试出错了

运行时错误“91”:未设置对象变量或带块变量

在线

Set objfile=objfolder.parsename(文件名)

欢迎所有帮助…我是初学者

Private Sub CommandButton1_Click()
    Dim objShell As Object
    Dim objFolder As Object
    Dim objFile As Object
    Dim filepath As String
    Dim filename As String
    Dim filedimensions As String
    Dim prefilename As Integer
    Dim folderpath As String
    Dim i As Integer

    i = 7
    filepath = Worksheets("Sheet1").Cells(i, 1).Value
    Do Until IsEmpty(filepath)
      filepath = Worksheets("Sheet1").Cells(i, 1).Value
      prefilename = InStrRev(filepath, "\")
      folderpath = Left(Worksheets("Sheet1").Cells(i, 1).Value, prefilename)
      filename = Right(filepath, Len(filepath) - prefilename)
      Set objShell = CreateObject("Shell.Application")
      Set objFolder = objShell.Namespace(folderpath)
      Set objFile = objFolder.ParseName(filename)
      filedimensions = objFile.ExtendedProperty("Dimensions")
      Worksheets("Sheet1").Cells(i, 17).Value = filename
      Worksheets("Sheet1").Cells(i, 21).Value = filedimensions
      i = i + 1
    Loop
End Sub

此错误表示您尝试使用的对象在VBA术语中不包含任何内容

了解错误所在的行,查看您试图使用的对象:
objFolder
。在哪里分配了
objFolder
?就在上面的线上。为什么不给它分配一些别的东西,而不是什么都没有?因为
objShell.Namespace
没有返回任何内容。为什么
objShell.Namespace
什么也不返回?因为文件夹不存在

这是您的代码,经过一些修改可以帮助您解决问题。正如@braX所提到的,
F8
,即时窗口(Ctrl+G)加上断点非常有效

Private Sub CommandButton1_Click()
    Dim objShell As Object
    Dim objFolder As Object
    Dim objFile As Object
    Dim filepath As String
    Dim filename As String
    Dim filedimensions As String
    Dim prefilename As Integer
    Dim folderpath As String
    Dim i As Integer

    'Moved this line out of the loop; assigning once is enough.
    Set objShell = CreateObject("Shell.Application")

    i = 7
    filepath = Worksheets("Sheet1").Cells(i, 1).Value
    Do Until IsEmpty(filepath)
      filepath = Worksheets("Sheet1").Cells(i, 1).Value
      prefilename = InStrRev(filepath, "\")
      folderpath = Left(Worksheets("Sheet1").Cells(i, 1).Value, prefilename)
      filename = Right(filepath, Len(filepath) - prefilename)

      Set objFolder = objShell.Namespace(folderpath)

      'Check whether objFolder resolved to something.
      If objFolder Is Nothing Then
          MsgBox "Folder not found: " & folderpath, vbInformation + vbOKOnly, "Note"
      Else
        Set objFile = objFolder.ParseName(filename)

        filedimensions = objFile.ExtendedProperty("Dimensions")

        Worksheets("Sheet1").Cells(i, 17).Value = filename
        Worksheets("Sheet1").Cells(i, 21).Value = filedimensions
      End If

      i = i + 1
    Loop
End Sub

此错误表示您尝试使用的对象在VBA术语中不包含任何内容

了解错误所在的行,查看您试图使用的对象:
objFolder
。在哪里分配了
objFolder
?就在上面的线上。为什么不给它分配一些别的东西,而不是什么都没有?因为
objShell.Namespace
没有返回任何内容。为什么
objShell.Namespace
什么也不返回?因为文件夹不存在

这是您的代码,经过一些修改可以帮助您解决问题。正如@braX所提到的,
F8
,即时窗口(Ctrl+G)加上断点非常有效

Private Sub CommandButton1_Click()
    Dim objShell As Object
    Dim objFolder As Object
    Dim objFile As Object
    Dim filepath As String
    Dim filename As String
    Dim filedimensions As String
    Dim prefilename As Integer
    Dim folderpath As String
    Dim i As Integer

    'Moved this line out of the loop; assigning once is enough.
    Set objShell = CreateObject("Shell.Application")

    i = 7
    filepath = Worksheets("Sheet1").Cells(i, 1).Value
    Do Until IsEmpty(filepath)
      filepath = Worksheets("Sheet1").Cells(i, 1).Value
      prefilename = InStrRev(filepath, "\")
      folderpath = Left(Worksheets("Sheet1").Cells(i, 1).Value, prefilename)
      filename = Right(filepath, Len(filepath) - prefilename)

      Set objFolder = objShell.Namespace(folderpath)

      'Check whether objFolder resolved to something.
      If objFolder Is Nothing Then
          MsgBox "Folder not found: " & folderpath, vbInformation + vbOKOnly, "Note"
      Else
        Set objFile = objFolder.ParseName(filename)

        filedimensions = objFile.ExtendedProperty("Dimensions")

        Worksheets("Sheet1").Cells(i, 17).Value = filename
        Worksheets("Sheet1").Cells(i, 21).Value = filedimensions
      End If

      i = i + 1
    Loop
End Sub

在不知道
folderpath
的值是什么的情况下,我猜它与这一行有关-
Set objFolder=objShell.Namespace(folderpath)
请学习如何使用
F8
单步遍历代码,以及如何使用即时窗口检查所有变量。如果您自称是初学者,并且使用的代码包含大量
对象
变量,则错误消息将非常混乱。感谢您的评论。路径如下所示:S:\GGG\advantage\uploads\expand\my stuff\fun stuff\07398.jpg我今天将继续研究这个问题,并进行更新。在不知道
folderpath
的值是什么的情况下,我猜它与这一行有关-
Set objFolder=objShell.Namespace(folderpath)
请学习如何使用
F8单步执行代码,以及如何使用即时窗口检查所有变量。如果您自称是初学者,并且使用的代码包含大量
对象
变量,则错误消息将非常混乱。感谢您的评论。路径如下所示:S:\GGG\advantage\uploads\expand\my stuff\fun stuff\07398.jpg我今天会继续做这方面的工作,并会回来更新。谢谢!路径如下所示:S:\GGG\advantage\uploads\expand\my stuff\fun stuff\07398.jpg objFolder没有任何价值,今天将进行更多实验。谢谢!路径如下所示:S:\GGG\advantage\uploads\expand\my stuff\fun stuff\07398.jpg我对objFolder没有任何价值,今天将进行更多的实验。