| 
    
     |  | 行き詰りました。。お知恵をお借りできたら嬉しいです。 
 1つのフォルダに複数のブックにあり、
 そのブックの中で、特定のシートにあるレコードだけを1つのブックに
 コピぺで集約していくマクロを作成しています。
 
 シートが有るか無いかをflagを使って処理をしようと入れてみました。
 一番最初に該当するシートが無いブックに当たった場合は、処理ができたのですが、途中に該当するシートが無いブックにがあると、
 「実行時エラー9、インデックスが有効範囲にありません。」となり、
 ウォッチで見ると、flag の値が empty になっていました。
 flag の値を空にする処理が必要なのでしょうか。。
 
 以下がVBAになります。
 宜しくお願い致します!
 
 <行いたい処理>
 ブックの中に、シートAがあったら値を集約先にコピーする処理、
 なかったら次のブックに進む。
 
 <VBA>
 ============================================
 Sub 集約()
 Dim fso As FileSystemObject
 Set fso = New FileSystemObject
 Dim pass As String
 pass = ThisWorkbook.Path & "\ファイルの保存先"
 Dim i As Long, j As Long
 
 j = 2
 Dim f As File
 Dim ws As Worksheet
 Dim flag As Boolean
 
 For Each f In fso.GetFolder(pass).Files
 With Workbooks.Open(f)
 
 For Each ws In Worksheets
 If ws.Name = "A" Then flag = True
 Next ws
 If flag = False Then Close
 If flag = True Then
 
 With .Worksheets("A")
 
 i = 2
 Do While .Cells(i, 1).Value <> ""
 Sheet1.Cells(j, 1).Value = .Cells(i, 1).Value
 Sheet1.Cells(j, 2).Value = .Cells(i, 2).Value
 Sheet1.Cells(j, 3).Value = .Cells(i, 3).Value
 Sheet1.Cells(j, 4).Value = .Cells(i, 4).Value
 Sheet1.Cells(j, 5).Value = .Cells(i, 5).Value
 Sheet1.Cells(j, 6).Value = .Cells(i, 6).Value
 Sheet1.Cells(j, 7).Value = .Cells(i, 7).Value
 Sheet1.Cells(j, 8).Value = .Cells(i, 8).Value
 Sheet1.Cells(j, 9).Value = .Cells(i, 9).Value
 Sheet1.Cells(j, 9).Value = .Cells(i, 10).Value
 i = i + 1
 j = j + 1
 Loop
 End With
 Set ws = Nothing
 
 End If
 
 .Close
 End With
 
 Next f
 End Sub
 
 |  |