| 
    
     |  | ▼にしもり さん: 
 >このようにしたら出来たみたいです。
 >ありがとうございました。
 
 思い通りに位置指定できてコピペできていれば、それでよいのですが、
 自分だったら、こう書くというサンプルです
 
 Sub Ck_Test()
 Dim Files, i As Long
 Dim cBook As Workbook, pBook As Workbook
 Dim rCopyTo As Range
 Dim m As Long
 
 Files = Application.GetOpenFilename _
 (FileFilter:="CsvFile, *.csv", MultiSelect:=True)
 If IsArray(Files) Then
 Set pBook = Workbooks.Add(xlWBATWorksheet)
 
 For i = 1 To UBound(Files)
 Set cBook = Workbooks.Open(Files(i))
 With pBook.Worksheets(1) 'コピー先シート最終セル
 Set rCopyTo = .Cells(.Rows.Count, 1).End(xlUp)
 End With
 m = IIf(i = 1, 0, 1) 'iが1のとき Offsetは無し
 cBook.ActiveSheet.UsedRange.Offset(m).Copy _
 rCopyTo.Offset(m)
 cBook.Close False
 Next i
 End If
 
 pBook.SaveAs Filename:="D:\Test.xlsx", FileFormat:= _
 xlOpenXMLWorkbook, CreateBackup:=False
 pBook.Close True
 
 MsgBox "終了しました。"
 
 End Sub
 
 《修正点》
 ◆シートの最終行はマジックナンバー65536 を用いないほうがよい _
 Set rCopyTo = .Cells(.Rows.Count, 1).End(xlUp)
 
 ◆     Workbooks.Open Files(i)
 Set cBook = ActiveWorkbook
 これは
 Set cBook = Workbooks.Open(Files(i))
 と一行で 変数にセットできます。(そのまえのpBookも同じ)
 
 ◆1つ目とそれ以降で Offset(1)するかしないか 変数mにi=1のとき _
 0, それ以上 1 としておけば、コピー処理は1行で記述できる
 
 ◆CopyしてPasteSpecial貼り付け xlPasteAll → Copy と同じ
 >      m = IIf(i = 1, 0, 1) 'iが1のとき Offsetは無し
 >      cBook.ActiveSheet.UsedRange.Offset(m).Copy _
 >         rCopyTo.Offset(m)
 
 ◆ActiveWorkbook.Close よりせっかく変数に格納しているのだから _
 pBook.Close としたほうがよい
 ◆また、pBook.Close の第1引数は SaveChanges ではないか?
 
 |  |