| 
    
     |  | はじめましてこんばんは。 仕事の必要上、「サブフォルダを含めた全フォルダの中の、全ファイルのプロパティ(詳細情報)の一覧作成」マクロを、vbaの知識がないことからweb上の作例を参考に作ろうとしているのですが、全くうまく動きません。
 
 大変お恥ずかしいのですが、下の記述で修正個所等を教えてください。
 よろしくお願いします。
 
 Sub ファイルプロパティ一覧()
 Dim フォルダパス As String
 Dim ファイルタイプ As String
 Dim エラーカウント As Integer
 Dim 拡張子 As String
 Dim メッセージ As String
 Dim 開始日時 As Variant
 Dim 終了日時 As Variant
 Dim 既存データ As Integer
 Dim 追加シート名初期 As String
 Dim 追加シート名 As String
 Dim 重複 As Integer
 Dim シート As Worksheet
 Dim シート数 As Integer
 
 追加シート名初期 = "ファイプロパティ"
 追加シート名 = 追加シート名初期
 
 ThisWorkbook.Worksheets("スタートシート").Activate
 
 For 重複 = 1 To 100
 For Each シート In Worksheets
 If シート.Name = 追加シート名 Then
 追加シート名 = 追加シート名初期 & "(" & 重複 & ")"
 End If
 Next シート
 Next 重複
 シート数 = Worksheets.Count
 Worksheets("テンプレート02").Copy After:=Worksheets(シート数)
 ActiveSheet.Name = 追加シート名
 
 ChDrive ThisWorkbook.Path
 ChDir ThisWorkbook.Path
 
 フォルダパス = Application.GetOpenFilename(ファイルタイプ)
 
 If フォルダパス = "False" Then End
 
 開始日時 = Now        ' 開始時刻を変数に格納
 
 フォルダパス = Left(フォルダパス, InStrRev(フォルダパス, "\"))
 
 On Error GoTo エラー表示
 
 項目数 = 40
 ReDim ファイルプロパティ(項目数, 1)
 
 Call ファイル検索(フォルダパス, ファイルプロパティ, 拡張子)
 
 Worksheets(追加シート名).Activate
 
 Range("A3").Resize(UBound(ファイルプロパティ, 2), 項目数) _
 = WorksheetFunction.Transpose(ファイルプロパティ)
 
 Range("A3").Select
 
 終了日時 = Now
 MsgBox "処理時間は、" _
 & Format(終了日時 - 開始日時, "hh時間nn分ss秒") & " でした。"
 
 Exit Sub 'エラー以外は、以下のラベル部分を実行させないためのテクニック。
 
 エラー表示:
 
 エラーカウント = エラーカウント + 1
 メッセージ = "エラーが発生しました。" & Chr(13) _
 & "フォルダパス= " & フォルダパス & Chr(13) _
 & "フルパス= " & フルパス & Chr(13) _
 & "UBound(ファイルプロパティ, 2)= " & UBound(ファイルプロパティ, 2) & Chr(13) _
 & "ActiveWorkbook名= " & ActiveWorkbook.Name & Chr(13) _
 & "エラー番号 " & Str(Err.Number) & Err.Source & _
 " でエラーが発生しました。" & Chr(13) & Err.Description
 
 MsgBox メッセージ, , "エラー", Err.HelpFile, Err.HelpContext
 
 ActiveWorkbook.Close False
 
 If エラーカウント > 5 Then Exit Sub
 Resume Next
 End Sub
 
 
 Sub ファイル検索(フォルダパス As String, ファイルプロパティ() As String, 拡張子 As String)
 '再帰処理でファイル抽出
 
 Dim i As Integer
 Dim strFileName As Variant
 Dim 行 As Integer
 Dim 列 As Integer
 Dim ファイル As Integer
 Dim データ(10000, 65) As Variant
 Dim 追加シート名 As String
 Dim ファイル拡張子 As String
 Dim ファイル名 As String
 Dim objShell As Object
 Dim objFolder As Object
 
 Set objShell = CreateObject("Shell.Application")
 Set objFolder = objShell.Namespace(フォルダパス)
 
 For i = 0 To 40
 データ(0, i) = objFolder.GetDetailsOf(objFolder.Items, i)
 Next
 ファイル = 0
 For Each strFileName In objFolder.Items
 
 ファイル名 = CStr(strFileName)
 ファイル拡張子 = LCase(Right(ファイル名, Len(ファイル名) - InStrRev(ファイル名, ".")))
 If 拡張子 = "*" Then ファイル拡張子 = "*"
 
 If ファイル拡張子 = 拡張子 Then
 ファイル = ファイル + 1
 For i = 0 To 40
 データ(ファイル, i) = objFolder.GetDetailsOf(strFileName, i)
 Next
 End If
 Next
 
 ThisWorkbook.Worksheets(追加シート名).Activate
 Application.ScreenUpdating = True
 
 For 行 = 0 To ファイル
 For 列 = 0 To 40
 ThisWorkbook.Worksheets(追加シート名).Range("A2").Cells(行 + 1, 列 + 1) _
 = データ(行, 列)
 Next 列
 Next 行
 
 End Sub
 
 |  |