

フォルダ内の値をすべて取得する方法を教えてください。  
下記のマクロだとブックの一番最初の値だけを取得してしまいます。  
取得した値をすべて転記したいのですが方法を教えてください。

[code]

    Sub 単体テスト仕様書マクロ()
    Dim wFile       As String
    Dim wFilePath   As String
    Dim i           As Long
     
    'Excelファイルが存在していたらファイル名を返す
    wFile = Dir(ActiveWorkbook.Path & "\*.xlsx")
     
    '先頭行を指定
    i = 2
     
    'カレントディレクトリに存在するExcelファイルを全て読み込む
    Do While wFile <> ""
         
        '開くExcelファイルのフルパスを取得
        wFilePath = ActiveWorkbook.Path & "\" & wFile
         
        '機能（ﾌﾟﾛｸﾞﾗﾑ）名・テスト件数・完了数・不具合件数を取得し配列に格納する（区切り文字：|）
        strData = Split(File_Load(wFilePath), "|")
         
        '機能（ﾌﾟﾛｸﾞﾗﾑ）名
        Cells(i, 1) = strData(0)
         
        'テスト件
        Cells(i, 2) = strData(1)
         
        '完了数
        Cells(i, 3) = strData(2)
        
        '不具合件数
        
        Cells(i, 4) = strData(3)
          
         
        '次のExcelファイルを取得
        wFile = Dir()
         
        '行数をカウント
        i = i + 1
     
    Loop
     
        MsgBox "完了"
    End Sub
    
    Function File_Load(ByVal wFilePath As String) As String
    
        Dim wb          As Workbook
        Dim wItem       As Variant
        Dim i           As Long
        Dim FoundCell   As Object
    
        Set wb = Workbooks.Open(wFilePath)
    
        wItem = Array("機能（ﾌﾟﾛｸﾞﾗﾑ）名", "テスト件数", "完了数", "不具合件数")
    
        For i = LBound(wItem) To UBound(wItem)
    
            Set FoundCell = wb.Worksheets(1).Cells.Find(What:=wItem(i))
    
            If FoundCell Is Nothing Then
                wItem(i) = ""
            Else
                wItem(i) = FoundCell.Offset(1, 0).Value
            End If
    
        Next i
    
        wb.Close SaveChanges:=False
    
        File_Load = Join(wItem, "|")
    
    
    End Function
    
[/code]


CC BY-SA 4.0
2022-04-12T11:39:15.990
88295
2022-05-10T06:40:55.000
2022-04-12T16:56:50.760
3060
52197
question
vba
フォルダー内の値をすべて取得するコード


ステップ実行してみてもらえませんでしょうか。  
見たところdir関数部分の記述は正しいのでdo while文部分が1回しか通過していない（ループせずに脱出している）とかくらいしか検討つきません。

while n <> ""

wend

でループ部分を記述しても動作するはずなのでdowhileが怪しければ書き換えてみてはいかがでしょうか。

あとは、最初のdir()部分で取得するのがxlsxファイルとのことですが、対象がxlsで切れている拡張子になっていたりすると反応しないとかは想定されます。  
その場合は「*.xls?」と記述するとxlsxもxlsmもxlsも全部取れますが、VBが入っているファイルが同階層にあるとそれも含まれてしまうため、例外処理が必要になりそうです。


CC BY-SA 4.0
2022-05-10T06:40:55.000
88744
2022-05-10T06:40:55.000
51823
88295
answer