2017-10-26 12 views
0

画像ファイルのサイズを取得しようとしています。すべてのパスがExcelの列に表示され、ファイルのサイズを別の列に設定することをお勧めします。ライン上エクセルVBAによる画像ファイルのサイズ

を設定していない

Set objfile = objfolder.parsename(filename)

変数またはWithブロック変数がオブジェクト任意およびすべてのヘルプ歓迎:私の試みは、エラー

実行時エラー「91」を取得します...私は初心者です。

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 
+0

- '設定しobjFolder = objShell.Namespace(フォルダパスを) ' – braX

+0

を通してステップする方法を学習してくださいあなたのコードは 'F8'を使用して、どのようにすべての変数をチェックするためにあなたの直接のウィンドウを使用する。自己宣言された初心者で、 'Object'変数がたくさんあるコードを使うと、エラーメッセージは本当に混乱するでしょう。 – braX

+0

ご意見ありがとうございます。パスは次のようになります。S:\ GGG \ advantage \ uploads \ expand \ my stuff \ fun stuff \ 07398.jpg 私はこれ以上いくつかの作業をしていきます。 – user1825494

答えて

2

このエラーは、使用しようとしているオブジェクトに、VBA用語でNothingが含まれていることを意味します。

エラーが発生した行を知っているので、使用しようとしているオブジェクトを確認してください:objFolderobjFolderはどこに割り当てられていますか?ちょうど上の行に。それはなぜNothing以外のものに割り当てられていないのですか? objShell.NamespaceはNothingを返したためです。なぜobjShell.Namespaceは何も返しませんでしたか?フォルダが存在しないためです。

あなたのコードはいくつか修正してあります。 @braX、F8で述べたように、イミディエイトウィンドウ(Ctrl + G)とブレークポイントは不思議に作用します。 folderpath` `の値が、私はそれがこの行とは何か持って推測するつもりされているもの知らず

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 
+0

ありがとう!パスは次のようになります:S:\ GGG \ advantage \ uploads \ expand \ my stuff \ fun stuff \ 07398.jpg 私はobjFolderで何の価値も得ていません。 – user1825494