| 
    
     |  | まいさん、ちくたくさん、こんにちわ。 
 ちくたくさんではありませんが、レスついてないようですので
 
 Sub フォルダをひらいて()
 
 Dim myFo As String
 Dim fileStr As String
 Dim myWb As Workbook, newWb As Workbook
 Dim myData As Variant
 Dim i As Integer, j As Integer, k As Integer
 
 'ここから追加
 Dim wData(1 To 23) As Variant
 Dim l As Long
 'ここまで追加
 
 myFo = "C:\Test"  'フォルダのパス
 fileStr = Dir(myFo & "\", vbNormal)
 Set newWb = Workbooks.Add
 k = 1
 
 Do While fileStr <> ""
 Set myWb = Workbooks.Open(myFo & "\" & fileStr)
 myData = _
 Range("A1:W" & myWb.ActiveSheet.Range("A65536").End(xlUp).Row)
 For i = 1 To UBound(myData, 1)
 For j = 1 To 23
 If myData(i, j) = "検索文字列" Then  '検索文字列を入力
 
 'ここから追加
 For l = 1 To 23
 wData(l) = myData(i, l)
 Next
 'ここまで追加
 
 'ここは変更
 newWb.ActiveSheet.Range("A" & k & ":W" & k).Value = wData
 'newWb.ActiveSheet.Rows(k) = myData
 k = k + 1
 End If
 Next j
 Next i
 
 myWb.Close
 fileStr = Dir
 Loop
 
 End Sub
 
 で、どうでしょうか?
 
 >> myData = Range("A1:W" & myWb.ActiveSheet.Range("A65536").End(xlUp).Row)
 >この命令はA1の行にある1行を取得ということでしょうか?
 >A65536はA列〜どこまでの列を指定するかによって変わるのでしょうか?
 
 myWb.ActiveSheet.Range("A65536").End(xlUp).Row
 これは、キー操作で言うと
 A65536のセルを選択しCtrl+カーソルキーの上を押す操作と同じです。
 A列の最後の行を取得します。
 仮にA50まで入力があったとした場合、A1:W50の範囲をmyDataにセットしています。
 
 >
 >>    For i = 1 To UBound(myData, 1)
 >>      For j = 1 To 23
 >>        If myData(i, j) = "検索文字列" Then   '検索文字列を入力
 >>          newWb.ActiveSheet.Rows(k) = myData
 >>          k = k + 1
 >>          End If
 >>       Next j
 >>    Next i
 >上記は検索文字列を引っ張るということですよね?
 
 こちらは、その意図で組まれているようですが、
 ちくたくさん余程急いでいたようですね。
 
 このコードはA列からW列まで総当りで検索されていますので、
 仮に"あ"と言う値を検索しようとした場合で、B15とD30に
 "あ"という値が入力されていた場合は、両方とも抽出されます。
 
 
 |  |