| 
    
     |  | ▼マスク さん: 
 >日付データは必ずA列に存在します。日付だけは固定です。
 >8/31はひとつのCSVファイルに複数行必ず存在します。
 >営業時間内分のログが入っているので、数十行必ず存在します。
 了解です。
 
 >コメントを見て、似たような事例を引っ張ってきました。
 >やはり空白の列の求め方が分からないのと、貼りつける別シートは新規で作成したいのですが……。
 
 >ファイルを開いて見出し行を挿入する処理が分かりませんでした。
 
 とりあえず、CSVファイルの1行目が項目見出しになっている例で
 考えてみました(そうのほうがAutoFilterすぐかけれて、単純なので)
 
 Sub Filter_CSV()
 Dim myDate As Long '抽出したい日付 (シリアル値)
 Dim myCSVs, f
 Dim newBook As Workbook
 Dim rCopy As Range  '抽出転記先先頭セル
 Dim myCol As Long
 
 '●抽出したい日付をこのマクロブックのSheet1!A1セルに書いておく
 myDate = ThisWorkbook.Worksheets(1).Range("A1").Value2
 
 'OpenするCSVファイルを(複数)指定
 myCSVs = Application.GetOpenFilename("CSVファイル,*.csv", _
 MultiSelect:=True)
 If Not IsArray(myCSVs) Then Exit Sub
 
 '抽出転記先のBookを作成
 Set newBook = Workbooks.Add(xlWBATWorksheet) 'シート1枚
 Set rCopy = newBook.Sheets(1).Range("A1")
 
 '指定のCSVファイルを順に開いてフィルタ抽出
 For Each f In myCSVs
 With Workbooks.Open(f).Worksheets(1)
 '表領域に対してA列の日付をAutoFilterで抽出する
 With .Range("A1").CurrentRegion
 .AutoFilter 1, ">=" & myDate, xlAnd, "<=" & myDate
 If .Columns(1).SpecialCells(xlVisible).Count > 1 Then
 myCol = .Columns.Count      '表の列数
 .Copy rCopy            '別シートにCopy
 Set rCopy = rCopy.Offset(, myCol) '次の貼り付け先
 End If
 .AutoFilter
 End With
 .Parent.Close False
 End With
 Next
 newBook.Close True
 
 End Sub
 
 これで 実際のCSVファイルの先頭に カンマ区切りで列見出しを書き込んで、
 (ファイルは2つほどでよい)名前をつけて保存して、
 ↑のプロシージャを実行してみてください。
 
 
 |  |